用vbs实现删除名称中有撇号的文件夹_vbs

问:
您好,脚本专家!如何删除名称中有撇号的文件夹?
-- JH
答:
您好,JH。噢,是的,撇号:每个脚本编写者的主要灾难来源。撇号看起来只是一个简单的小字符,但切莫让它的外表所迷惑:撇号(或单引号)可能是键盘上最致命的字符。无论您是使用 Active Directory、数据库,还是文件系统,一个撇号就可以给您的脚本带来全部灾难。正如 Bart Simpson 曾经形容 Hershey? 的 Milk Dud 糖果,撇号也是“甜外毒内”。
注意:不,Milk Dud 里面并非真的有毒药。
撇号的问题在于它是“保留”字符,也就是 VBScript 自己专用的字符。例如,假设您要删除文件夹 C:\Scripts。下面的脚本就将执行这一操作:
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
如果您仔细查看 Where 子句,您会发现撇号(或单引号)用于代表一个字符串值:‘C:\\Scripts'。这就是我们在处理名称中有撇号的文件夹(例如,Ken's Scripts)时出现问题的原因。如果我们尝试运行如下脚本,您猜猜会发生什么?
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
我们不会让您处于紧张的等待状态:这个脚本必然会失败。为什么?唔,请看其中的 Where 子句:
Where Name = 'c:\\Ken's Scripts'
因为在 Where 子句中用撇号标记字符串的起始和结尾,所以 VBScript 认为文件夹的名称为:‘C:\\Ken'。这本来没问题,只可惜紧该字符串后面还有一串字符 (s Scripts')。VBScript 不知道这些杂乱数据表示什么,因此它只是放弃且不做任何尝试。
是的,我们知道。但这就是 VBScript 的工作方式。因为撇号是一个保留字符,用来(还有其它用途)在 Where 子句中标记字符串的起始和结尾。VBScript 只是不了解我们在说什么。
不,绝对不是笑话大多数不幸与脚本专家交谈的人。那个问题太简单了!
那么,有没有解决这个问题的方法呢?肯定有。您也许知道,每次在 Where 子句中(例如,在文件路径中)使用反斜线 (\) 时,必须在其前面放置另一个 \ 来“转义”反斜线;这就是为什么我们的文件路径类似 C:\\Scripts 而非 C:\Scripts。我们必须这样做,因为 \ 也是一个保留字符;指示 VBScript 按原样使用 \ 的唯一方法就是转义它(只是使用另一个 \ 作为其开端)。 
嗨,稍等一下:如果只需使用另一个 \ 作为开端就可以使用保留字符 \,或许您也可以使用如单引号之类的保留字符,方法是使用 \ 作为它的开端。 
您知道,这确实神奇地奏效了:
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。请注意我们是如何在撇号前面放置 \ 的;从而我们得到的结构看起来像这样:‘C:\\Ken\'s Scripts'。在文件夹名称中的任何撇号前面均放一个 \,脚本就可以正常工作了。是的,虽然看起来有点怪,但确实起作用。

时间: 2024-10-26 16:36:38

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

java删除指定目录下所有空文件夹的方法_java

本文实例讲述了java删除指定目录下所有空文件夹的方法.分享给大家供大家参考,具体如下: package com.func; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 删除指定目录下的所有空文件夹 * * @author zdw * */ public class FileUtils { List<File> list = new ArrayList<File>();

如何删除与恢复XP系统文件和文件夹

  如何删除与恢复XP系统文件和文件夹            1.删除文件或文件夹 步骤1:打开要删除的文件或文件夹所在的文件夹窗口,选中需要删除的文件或文件夹(参见图1左图),按一下[Delete]键. 步骤2:在弹出的删除确认对话框中单击"是"按钮,便可将选定的文件或文件夹移动到"回收站"文件夹中,也即删除了所选文件或文件夹,如图1右图所示. 2.恢复误删除的文件或文件夹 步骤1:要恢复被误删除的文件或文件夹,可双击桌面上的"回收站"图标,打

用VBS脚本删除指定以外的文件或文件夹_vbs

Option Explicit ''''''''''''''说明'''''''''''' '网盟-黑火制作,送给需要的朋友. '配置文件"Listfile.ini"的格式如下: '要删除什么(文件|目录)=要执行删除的文件夹=排除1;排除2;排除3............ '配置文件可以有多行,以便对多个目录进行操作. '配置文件里以"/"开头的行为注释行. '排除多个内容时,使用分号";"进行分隔. '↓↓↓ 配置文件例子:↓↓↓ '/配置文件

批处理bat删除指定天数日期之前的文件夹_DOS/BAT

[方案一]BAT + REG + VBS 复制代码 代码如下: @echo off ::演示:删除指定路径下指定天数之前(以文件夹的最后修改日期为准)的文件夹. ::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除. ::本例调用了临时VBS代码进行日期计算 ::本例为兼容不同的日期格式,调用reg命令(XP系统自带)统一设置日期格式, ::处理完毕之后再把日期格式恢复成原来的状态. rem 指定待删除文件夹的存放路径 set SrcDir=C:/Test rem 指定天数 set

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

my-script.vbs "c:\scripts" 在文件夹路径的两端必须加双引号吗?本例中不需要.但是,如果路径中有空格,则必须加双引号.以下命令行将不起作用: my-script.vbs c:\documents and settings\kmyer 只要是向脚本传递包含空格的参数,就必须将整个参数括在双引号内(否则无需如此).换句话说: my-script.vbs "c:\documents and settings\kmyer" 这就是命令解释程序的工作方

删除指定路径的类型为文件夹的文件,不删除其他文件如何处理

问题描述 比如在路径C:ProgramFiles中有好多类型的文件,有文件夹文件,有.exe,.ini,.txt但在这些文件中,我只想删除文件夹文件,该如何处理呢,麻烦指导 解决方案 解决方案二:遍历下面的文件夹,Directory.Delete(path,true)或者dir.Delete(true);DirectoryInfotheFolder=newDirectoryInfo(@"F:a");DirectoryInfo[]dirInfo=theFolder.GetDirector

如何删除Win7下隐藏的顽固文件夹

  有用户在用windows7优化大师扫描的时候,发现d盘有一个奇怪的目录:found.000,属性是隐藏,隐藏属性框里的勾是灰色的,这样就无法更改它的属性了,也无法删除这个"顽固"的文件夹. 这种情况可以用xuetr软件试试,它能删除这样"顽固"的文件夹.当然也可以用其他工具,只要带有文件夹粉碎的功能即可.xuetr的删除方法是,打开工具后,点击"文件",在左侧窗口找到d:found.000,鼠标右键点击该文件夹,在弹出的菜单选择"强

如何批量删除Windows7下的WINDOWS.OLD文件夹

本节教程目的是使用批处理批量删除Win7下WINDOWS.OLD文件夹.WINDOWS.OLD这个文件夹是您在安装升级Windows7时对以前操作系统的备份目录,可能会占用你硬盘的几个甚至几十个G的空间! WINDOWS.OLD文件夹可不能直接删除,Win7自己做的备份肯定有点特殊,如果你直接删除,哦,会导致Windows 7的Explorer(资源管理器)崩溃.那么该如何操作轻松的删除WINDOWS.OLD文件夹呢? 打开记事本,然后把下面的内容粘贴进去 rd/S/Q c:WINDOWS.OL

怎样删除win7系统下的顽固文件夹

win7系统用户应该都有过这样的经历,在电脑上创建了文件夹后,有时会被别的用户在无意之中删除,遇到这种情况我们应该怎么办呢?怎么才能创建一个别人无法删除的文件夹呢?现在就跟小编一起来看看,解决这个问题的具体方法吧. 解决方法: 1.使用组合快捷键"win+r"打开运行对话框,然后在框中输入"cmd",回车; 2.在打开的命令提示符窗口中,输入创建命令"md e:wenjian.."创建新的文件夹; 3.记住文件后面要加两个点,然后回车,E盘下就会