手机
当前位置:查字典教程网 >脚本专栏 >vbs >用vbs实现删除名称中有撇号的文件夹
用vbs实现删除名称中有撇号的文件夹
摘要:问:您好,脚本专家!如何删除名称中有撇号的文件夹?--JH答:您好,JH。噢,是的,撇号:每个脚本编写者的主要灾难来源。撇号看起来只是一个简...

问:

您好,脚本专家!如何删除名称中有撇号的文件夹?

--JH

答:

您好,JH。噢,是的,撇号:每个脚本编写者的主要灾难来源。撇号看起来只是一个简单的小字符,但切莫让它的外表所迷惑:撇号(或单引号)可能是键盘上最致命的字符。无论您是使用ActiveDirectory、数据库,还是文件系统,一个撇号就可以给您的脚本带来全部灾难。正如BartSimpson曾经形容Hershey?的MilkDud糖果,撇号也是“甜外毒内”。

注意:不,MilkDud里面并非真的有毒药。

撇号的问题在于它是“保留”字符,也就是VBScript自己专用的字符。例如,假设您要删除文件夹C:Scripts。下面的脚本就将执行这一操作:

strComputer="."

SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")

SetcolFolders=objWMIService._

ExecQuery("Select*FromWin32_DirectoryWhereName='C:Scripts'")

ForEachobjFolderincolFolders

errResults=objFolder.Delete

Next

如果您仔细查看Where子句,您会发现撇号(或单引号)用于代表一个字符串值:‘C:Scripts'。这就是我们在处理名称中有撇号的文件夹(例如,Ken'sScripts)时出现问题的原因。如果我们尝试运行如下脚本,您猜猜会发生什么?

strComputer="."

SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")

SetcolFolders=objWMIService._

ExecQuery("Select*FromWin32_DirectoryWhereName='C:Ken'sScripts'")

ForEachobjFolderincolFolders

errResults=objFolder.Delete

Next

我们不会让您处于紧张的等待状态:这个脚本必然会失败。为什么?唔,请看其中的Where子句:

WhereName='c:Ken'sScripts'

因为在Where子句中用撇号标记字符串的起始和结尾,所以VBScript认为文件夹的名称为:‘C:Ken'。这本来没问题,只可惜紧该字符串后面还有一串字符(sScripts')。VBScript不知道这些杂乱数据表示什么,因此它只是放弃且不做任何尝试。

是的,我们知道。但这就是VBScript的工作方式。因为撇号是一个保留字符,用来(还有其它用途)在Where子句中标记字符串的起始和结尾。VBScript只是不了解我们在说什么。

不,绝对不是笑话大多数不幸与脚本专家交谈的人。那个问题太简单了!

那么,有没有解决这个问题的方法呢?肯定有。您也许知道,每次在Where子句中(例如,在文件路径中)使用反斜线()时,必须在其前面放置另一个来“转义”反斜线;这就是为什么我们的文件路径类似C:Scripts而非C:Scripts。我们必须这样做,因为也是一个保留字符;指示VBScript按原样使用的唯一方法就是转义它(只是使用另一个作为其开端)。

嗨,稍等一下:如果只需使用另一个作为开端就可以使用保留字符,或许您也可以使用如单引号之类的保留字符,方法是使用作为它的开端。

您知道,这确实神奇地奏效了:

strComputer="."

SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")

SetcolFolders=objWMIService._

ExecQuery("Select*fromWin32_DirectoryWhereName='C:Ken'sScripts'")

ForEachobjFolderincolFolders

errResults=objFolder.Delete

Next

答案就在这里,JH。请注意我们是如何在撇号前面放置的;从而我们得到的结构看起来像这样:‘C:Ken'sScripts'。在文件夹名称中的任何撇号前面均放一个,脚本就可以正常工作了。是的,虽然看起来有点怪,但确实起作用。

【用vbs实现删除名称中有撇号的文件夹】相关文章:

VBS调用WMI实现搜索硬盘mp3文件

vbs 定时删除功能实现代码

用vbs实现不死帐号的代码

vbs实现压缩文件夹的脚本

用vbs实现取消隐藏文件夹中的所有文件

用VBS实现监视进程创建与删除的代码

vbscript自动配置IIS的代码

输入mdb数据库即可将打包的mdb文件解包

用vbs实现在启动 Windows 资源管理器时打开特定文件夹

利用vbs脚本实现设置IE的打印页眉页脚信息

精品推荐
分类导航