用vbs實(shí)現(xiàn)刪除名稱中有撇號(hào)的文件夾
問(wèn):
您好,腳本專家!如何刪除名稱中有撇號(hào)的文件夾?
-- JH
答:
您好,JH。噢,是的,撇號(hào):每個(gè)腳本編寫者的主要災(zāi)難來(lái)源。撇號(hào)看起來(lái)只是一個(gè)簡(jiǎn)單的小字符,但切莫讓它的外表所迷惑:撇號(hào)(或單引號(hào))可能是鍵盤上最致命的字符。無(wú)論您是使用 Active Directory、數(shù)據(jù)庫(kù),還是文件系統(tǒng),一個(gè)撇號(hào)就可以給您的腳本帶來(lái)全部災(zāi)難。正如 Bart Simpson 曾經(jīng)形容 Hershey? 的 Milk Dud 糖果,撇號(hào)也是“甜外毒內(nèi)”。
注意:不,Milk Dud 里面并非真的有毒藥。
撇號(hào)的問(wèn)題在于它是“保留”字符,也就是 VBScript 自己專用的字符。例如,假設(shè)您要?jiǎng)h除文件夾 C:\Scripts。下面的腳本就將執(zhí)行這一操作:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * From Win32_Directory Where Name = 'C:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Delete
Next
如果您仔細(xì)查看 Where 子句,您會(huì)發(fā)現(xiàn)撇號(hào)(或單引號(hào))用于代表一個(gè)字符串值:‘C:\\Scripts'。這就是我們?cè)谔幚砻Q中有撇號(hào)的文件夾(例如,Ken's Scripts)時(shí)出現(xiàn)問(wèn)題的原因。如果我們嘗試運(yùn)行如下腳本,您猜猜會(huì)發(fā)生什么?
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * From Win32_Directory Where Name = 'C:\\Ken's Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Delete
Next
我們不會(huì)讓您處于緊張的等待狀態(tài):這個(gè)腳本必然會(huì)失敗。為什么?唔,請(qǐng)看其中的 Where 子句:
Where Name = 'c:\\Ken's Scripts'
因?yàn)樵?nbsp;Where 子句中用撇號(hào)標(biāo)記字符串的起始和結(jié)尾,所以 VBScript 認(rèn)為文件夾的名稱為:‘C:\\Ken'。這本來(lái)沒(méi)問(wèn)題,只可惜緊該字符串后面還有一串字符 (s Scripts')。VBScript 不知道這些雜亂數(shù)據(jù)表示什么,因此它只是放棄且不做任何嘗試。
是的,我們知道。但這就是 VBScript 的工作方式。因?yàn)槠蔡?hào)是一個(gè)保留字符,用來(lái)(還有其它用途)在 Where 子句中標(biāo)記字符串的起始和結(jié)尾。VBScript 只是不了解我們?cè)谡f(shuō)什么。
不,絕對(duì)不是笑話大多數(shù)不幸與腳本專家交談的人。那個(gè)問(wèn)題太簡(jiǎn)單了!
那么,有沒(méi)有解決這個(gè)問(wèn)題的方法呢?肯定有。您也許知道,每次在 Where 子句中(例如,在文件路徑中)使用反斜線 (\) 時(shí),必須在其前面放置另一個(gè) \ 來(lái)“轉(zhuǎn)義”反斜線;這就是為什么我們的文件路徑類似 C:\\Scripts 而非 C:\Scripts。我們必須這樣做,因?yàn)?nbsp;\ 也是一個(gè)保留字符;指示 VBScript 按原樣使用 \ 的唯一方法就是轉(zhuǎn)義它(只是使用另一個(gè) \ 作為其開(kāi)端)。
嗨,稍等一下:如果只需使用另一個(gè) \ 作為開(kāi)端就可以使用保留字符 \,或許您也可以使用如單引號(hào)之類的保留字符,方法是使用 \ 作為它的開(kāi)端。
您知道,這確實(shí)神奇地奏效了:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * from Win32_Directory Where Name = 'C:\\Ken\'s Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Delete
Next
答案就在這里,JH。請(qǐng)注意我們是如何在撇號(hào)前面放置 \ 的;從而我們得到的結(jié)構(gòu)看起來(lái)像這樣:‘C:\\Ken\'s Scripts'。在文件夾名稱中的任何撇號(hào)前面均放一個(gè) \,腳本就可以正常工作了。是的,雖然看起來(lái)有點(diǎn)怪,但確實(shí)起作用。
上一篇:可以將文件轉(zhuǎn)換為vbs語(yǔ)句的vbs代碼
欄 目:vb
下一篇:WINDOWS腳本實(shí)踐:為SAP補(bǔ)丁制作的VBS腳本代碼
本文標(biāo)題:用vbs實(shí)現(xiàn)刪除名稱中有撇號(hào)的文件夾
本文地址:http://mengdiqiu.com.cn/a1/vb/7929.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載