无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 22727|回复: 16
打印 上一主题 下一主题

如何使用通配符删除文件夹?

[复制链接]
跳转到指定楼层
1#
发表于 2005-6-24 10:45:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何使用通配符删除文件夹?
例如:
我想删除c:\windows\以$开头的所有文件夹,该怎么做?
2#
发表于 2005-6-24 12:06:28 | 只看该作者

如何使用通配符删除文件夹?

用NT内置的命令没有办法实现,如果deltree能够运行,可以试试deltree(这是win9x时期的纯DOS命令)。
回复

使用道具 举报

3#
发表于 2005-6-24 12:08:58 | 只看该作者

如何使用通配符删除文件夹?

或者用这个命令也是可以的:
for /F %D in (';dir /ad/b %windir%\$*.*';) do @rd /s /q /f %D
回复

使用道具 举报

4#
 楼主| 发表于 2005-6-24 13:38:13 | 只看该作者

如何使用通配符删除文件夹?

[这个贴子最后由kaixinguo在 2005/06/24 02:45pm 第 2 次编辑]

谢谢Climbing,我试了几次,没有效果.
我在windows目录下建立的文件夹不能被删除.(文件夹内有文件)
[UploadFile=BCF4CCF9B0E501_1119595525.jpg]
回复

使用道具 举报

5#
 楼主| 发表于 2005-6-24 14:50:14 | 只看该作者

如何使用通配符删除文件夹?

我找到了类似的文章:
前很多学校的网络教室采用PXE无盘工作站技术,尽管PXE工作站的管理有口皆碑,但由于学生的好奇甚至故意的“恶作剧”,差不多每一节课不等上完,系统就被弄得乱七八糟、面目全非了……
尽管这些都可以很容易地被禁止,但是限制越多,对学生来说越是索然无味,满足不了学生的好奇心和求知欲;如果在服务器上安装“还原精灵”的话,又使本已不堪重负的服务器变得更慢,并且只有经过漫长的服务器重启才能还原……于是,清空无盘工作站用户目录便成了还原工作站设置的最简单、最快捷、最有效的方法了!
然而,倘若靠手工逐个地清空无盘工作站用户目录,很是麻烦。其实这样的“苦差”完全可以请DOS完成——编个简单的批处理文件,轻松一按,几十台工作站的系统还原便瞬间完成!
为使叙述直观具体,就以我校的网络教室为实例来阐述。
■ 网络教室环境
我校的网络教室基本情况如下:
1.服务器操作系统为Windows 2000,安装在服务器C盘。
2.30台无盘工作站操作系统为Windows 98,上传在服务器D盘PXE目录里。
3.30台无盘工作站用户名依次为:A1~A5……F1~F5。用户目录与用户名相同,依次为服务器上“D:\PXE\”文件夹里的以下目录:A1~A5……F1~F5。
4.每个用户目录须有四个授权用户,即除了Administrator、System、Lnguest这三个全权用户外,另外必须还有一个全权用户——自身(如A1用户拥有对A1目录的全部权限),这样,就在实现对自己的目录完全控制的情况有效地避免了打开其他用户目录进行 “非法活动”了!
■ 编写批处理文件
现在,情况清楚了,要完成的任务就是:清空这30个用户目录(以达到还原无盘工作站之目的)。当然不是用手工删除,而是用一个简单的DOS批处理文件Cacls.bat(当然也可用其他名称)来完成。内容为:
D:
CD \PXE
FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO RD/S/Q %%X%%Y
FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO MD %%X%%Y
FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO CACLS D:\PXE\%%X%%Y /E /G %%X%%Y:F /R PXEclass
简单说明:
1. 该批处理文件中的DOS命令都是针对Windows 2000操作系统自带的DOS命令,而不是Windows 98里的DOS命令。
2.因为DOS中没有清空目录的命令,所以,只有分三步走了:
第一步,删除A1~F5这30个目录:FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO RD/S/Q %%X%%YFOR…IN…DO…是一个循环结构,注意变量名称是区分大小写的。
在这个二重循环嵌套里,第一次循环%%X值取A,执行FOR %Y IN (1 2 3 4 5) DO RD/S/Q A%Y 命令,删除A1、A2、A3、A4、A5;第二次循环%%X值取B,执行FOR %Y IN (1 2 3 4 5) DO RD/S/Q B%Y 命令,删除B1~B5……依此类推,共进行6次循环,执行30次删除目录操作。RD/S删除非空目录,/Q表示为安静模式(Quiet),即不询问。
第二步,重建这30个目录:FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO MD %%X%%Y重建后的A1~F5这30个文件夹图标,都有一个手形共享标志——竟然奇迹般地“记住”了先前的这30个文件夹的共享属性!
第三步,分别为这30个目录设置不同的权限:FOR %%X IN (A B C D E F) DO FOR %%Y IN (1 2 3 4 5) DO CACLS D:\PXE\%%X%%Y /E /G %%X%%Y:F /R PXEclass CACLS用来显示或者修改文件的访问控制表(ACL)即访问权限。这行命令的作用是为30个目录(A1~F5)添加一个自身用户并赋予全部权限(/E /G %%X%%Y:F);同时撤消一个PXEclass组权限(/R PXEclass)。PXEclass组是从其父目录(D:\PXE)继承而来,A1~F5都隶属于该组,之所以要撤消该组权限,目的是为了限制学生相互访问恶意删除他人文件。至于另三个全权用户(Administrator、System、Lnguest),MD在重建30个目录时已自动从D:\PXE继承了!
批处理文件的高明之处在于:删除和重建这30个目录不需写长长的30行RD命令,而只要一个FOR循环嵌套就行了。由于在删除时没有取消共享,这30个目录重建后会保持原有的共享设置。
对比着试了试,也不行.郁闷.
回复

使用道具 举报

6#
发表于 2005-6-24 15:03:25 | 只看该作者

如何使用通配符删除文件夹?

我发觉你使用命令很机械,我给你的命令只是一个例子,如果你在%windir%这个目录下运行这个命令就没有任何问题,如果想在任意目录下运行,需要修改成:
for /F %D in (';dir /ad/b %windir%\$*.*';) do @rd /s /q /f %windir%\%D
回复

使用道具 举报

7#
 楼主| 发表于 2005-6-24 15:18:23 | 只看该作者

如何使用通配符删除文件夹?

[这个贴子最后由kaixinguo在 2005/06/24 04:05pm 第 4 次编辑]

谢谢回答.
我其实在windows目录下也试过的.也不行.
[UploadFile=BCF4CCF9B0E501_1119597318.jpg]
我倒有个想法.
copy con c:\a.bat
rd /s /q
^z
dir /ad/b %windir%\$* >>c:\a.bat
call c:\a.bat
del c:\a.bat
但是我发现中间就多一个段落标记.所以a.bat执行不了.
有没有办法解决啊?谢谢
回复

使用道具 举报

8#
发表于 2005-6-24 16:24:56 | 只看该作者

如何使用通配符删除文件夹?

在我的试验中,这个命令没有任何问题,你肯定在哪里搞错了,是不是你的Windows目录下根本就没有$打头的文件夹呢?
H:\work\dos>for /f %d in (';dir /ad/b %windir%\$*.*';) do @echo rd /s /q %windir%\%d
rd /s /q C:\WINDOWS\$hf_mig$
rd /s /q C:\WINDOWS\$NtUninstallKB883939$
rd /s /q C:\WINDOWS\$NtUninstallKB890046$
rd /s /q C:\WINDOWS\$NtUninstallKB896358$
rd /s /q C:\WINDOWS\$NtUninstallKB896422$
rd /s /q C:\WINDOWS\$NtUninstallKB896428$
回复

使用道具 举报

9#
 楼主| 发表于 2005-6-24 17:57:27 | 只看该作者

如何使用通配符删除文件夹?

下面引用由Climbing2005/06/24 04:24pm 发表的内容:
for /f %d in (';dir /ad/b %windir%\$*.*';) do @echo rd /s /q %windir%\%d
太感谢了.终于成功了.
我在建立批条理之前都先建立了一个以$开头的文件夹,里面也建立了一个TXT文件的.不存在文件不会的.我也不知道是什么原因.
我换了一台电脑,结果就成功了.
可能是我的系统有问题.HP_OEM_EN_XP sp2
该系统还有一个问题.就是验证码无法显示.我用导入注册表的方法对其他电脑SP2都有效,就是对这个英文版无效.而且就是手动修改后还是无法显示网站验证码.真是奇怪.看来要换系统了.
再次感谢Climbing!
回复

使用道具 举报

10#
 楼主| 发表于 2005-6-24 19:34:49 | 只看该作者

如何使用通配符删除文件夹?

我今天是彻底晕了.
在使用批处理过程中又发现两个问题:
1.如果目录中含有空格则删除失败.
2.该语法在命令提示符下运行正常,但在批处理文件中无法执行.
如图:
[UploadFile=BCF4CCF9B0E501_1119612857.jpg]
真郁闷.看来想学好批处理真的不容易啊.
回复

使用道具 举报

11#
发表于 2005-6-25 10:04:31 | 只看该作者

如何使用通配符删除文件夹?

你只是没有认真的去学习批处理和各个命令的用法。
第一,如果要删除的文件夹中带空格,那么命令行要写成:
for /f %d in (';dir /ad/b %windir%\$*.*';) do @rd /s /q "%windir%\%d"
注意路径两边的双引号。
第二,如果要在批处理中使用该语句,那么其中的元数据%d要改成%%d。这个查for命令的语法帮助就可以知道。也就是说,在批处理中,这一句要改成:
for /f %%d in (';dir /ad/b %windir%\$*.*';) do @rd /s /q "%windir%\%%d"
回复

使用道具 举报

12#
 楼主| 发表于 2005-6-25 10:55:15 | 只看该作者

如何使用通配符删除文件夹?

下面引用由Climbing2005/06/25 10:04am 发表的内容:
第一,如果要删除的文件夹中带空格,那么命令行要写成:
for /f %d in (';dir /ad/b %windir%\$*.*';) do @rd /s /q "%windir%\%d"
注意路径两边的双引号。
第二,如果要在批处理中使用该语句,那么其中的元数据%d要改成%%d。这个查for命令的语法帮助就可以知道。也就是说,在批处理中,这一句要改成:
for /f %%d in (';dir /ad/b %windir%\$*.*';) do @rd /s /q "%windir%\%%d"
谢谢!
关于第一个,我尝试过加"",没有成功.刚才我又试了一下,还是不能成功.我的文件夹名为"$New Folder",只能显示出$New".所以删除失败.
第二,for的命令太繁杂了,以前学DOS的时候都没有接触过,现在刚接触而已。帮助说得即笼统又费解。也没有看到关于for命令更多更好的例子。这两天才算是有一点眉目,还多谢你一步一步的指点。
另外:想请教一下哪里有学习批处理的好地方啊?
回复

使用道具 举报

13#
 楼主| 发表于 2005-6-25 11:04:09 | 只看该作者

如何使用通配符删除文件夹?

[这个贴子最后由kaixinguo在 2005/06/25 12:42pm 第 2 次编辑]

原来我在英文版系统上测试不成功的原因就是因为我新建文件夹的时候,默认文件名是New Folder,我只是在前面加了个$,中间有个空格。而中文版则是“$新建文件夹”,没有空格。走了不少变路。
同时建立两个文件夹,一个带空格,一个不带空格。后一个直接被删除,前一个出现的提示就跟我第一张载图一样,找不到指定文件
回复

使用道具 举报

14#
 楼主| 发表于 2005-6-26 07:30:42 | 只看该作者

如何使用通配符删除文件夹?

自己顶一下,希望有高人能把带空格的也能删掉.谢谢.
回复

使用道具 举报

15#
发表于 2005-6-26 15:32:21 | 只看该作者

如何使用通配符删除文件夹?

呵呵,我又试了一下,命令可以修复成下面这样:
G:\work\dos\for>for /f "tokens=*" %d in (';dir /ad/b $*.*';) do @echo rd /s /q "%d"
rd /s /q "$New Folder"
rd /s /q "$NewFolder"
rd /s /q "$新建文件夹"
rd /s /q "$another new folder"
回复

使用道具 举报

16#
 楼主| 发表于 2005-6-27 08:02:49 | 只看该作者

如何使用通配符删除文件夹?

下面引用由Climbing2005/06/26 03:32pm 发表的内容:
呵呵,我又试了一下,命令可以修复成下面这样:
G:\work\dos\for>for /f "tokens=*" %d in (';dir /ad/b $*.*';) do @echo rd /s /q "%d"
rd /s /q "$New Folder&q ...
谢谢!
谢谢!
回复

使用道具 举报

17#
 楼主| 发表于 2005-6-27 09:51:42 | 只看该作者

如何使用通配符删除文件夹?

[这个贴子最后由kaixinguo在 2005/06/28 09:46am 第 5 次编辑]

算了,还是留着自己用吧.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 15:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表