【发布时间】:2011-09-18 17:33:39
【问题描述】:
我们的网络中有一种病毒,它在 USB 闪存驱动器上设置所有根目录属性隐藏和系统,并创建运行 cmd.exe、病毒本身然后打开目录的 lnk 文件,所以为了治愈这些驱动器,我使用命令:
attrib -s -h -r /d /s
del /q /s *.lnk
rd /q /s recycler
但是有一个问题:命令“attrib -s -h -r /d /s”递归处理所有文件和目录,如果有很多则需要太长时间(看起来Windows首先创建完整的文件列表然后开始处理一切)。
是否有可能只处理目录而不是文件,而不是使用 bat 文件递归处理?
就像在 perl 中一样:
opendir D, '.';
while($_ = readdir D){
if(-d $_){
#do something
}
}
closedir D;
谢谢。
-- UPD:2012-01-31,解决方案:
for /f "delims=" %i in ('dir /ad /ah /b') do @attrib -r -s -h -a "%i"
(将 %i 替换为 %%i 以在批处理文件中使用)
【问题讨论】:
-
如果病毒只影响根目录,为什么要处理所有文件和目录?
-
因为attrib命令不能使用像“只从当前目录获取目录”这样的过滤器,这就是我问这个问题的原因。
标签: windows batch-file directory attr