Board logo

标题: 怎么用for命令删除各个分区中的autorun.inf [打印本页]

作者: kmlxk     时间: 2006-9-24 04:53    标题: 怎么用for命令删除各个分区中的autorun.inf

有多个分区C..D..E.....J,怎么使用批处理文件实现删除各个分区中的autorun.inf(带有隐藏属性)

for(....?...) (attrib -s -h -r autorun.inf
del autorun.inf)
作者: redtek     时间: 2006-9-24 05:32
原理:

1、for枚举所有盘符
2、删指定的文件


* 有什么命令带有方便删除那些具有只读或隐藏等属性的文件呢?
  可以通过 dir /a 的参数来列出隐藏的文件,方便寻找和试验~:)
  DEL命令(windows下的dos环境)可以帮助删除,可以不用Attrib了。


DEL命令的使用帮助:
=============================================================

D:\>del /?
删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         指定一个或数个文件或目录列表。通配符可被用来
                删除多个文件。如果指定了一个目录,目录中的所
                有文件都会被删除。

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            从所有子目录删除指定文件。
  /Q            安静模式。删除全局通配符时,不要求确认。
  /A            根据属性选择要删除的文件。
  attributes    R  只读文件                     S  系统文件
                H  隐藏文件                     A  存档文件
                -  表示“否”的前缀

如果命令扩展被启用,DEL 和 ERASE 更改如下:

/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。

=============================================================


非常危险的删除一个盘下所有目录中的所有你指定的文件!
===============
D:\>del /p /f /s /a d:*.bak
===============

Del 后面加了/P这个参数,这是在试验自己写的批处理是否正确而让删除前都提示
这句在试验时是必须的!


///// 下面命令危险,操作不好数据全没  ///////

刚才在试验的时候键错了命令:
(del d:这里就错了,是习惯造成的,所以后面的*.bak它是不管的)
====================
D:\>del d: /f /s /q /p *.bak
D:\hosts,要删除(Y/N)吗? n
D:\Windows Server 2003 For Intel.GHO,要删除(Y/N)吗? n
D:\#  29号机试准备\#  考试专用目录.rar,要删除(Y/N)吗? n
D:\#  29号机试准备\j2ee.rar,要删除(Y/N)吗?
====================
幸好习惯了用“提示”来做实验,和没有选择“/Q”的安静模式,因为安静模式的参数是不经你确认,当你还不及后悔的时候所有东西就全被删光了!

在试验其它for的时候最好用ECHO代替实际要干的事情。
幸好我这17个G的数据,多检查要出现的万一,哈哈……



正确的命令操作:

////////////// 注意: 操作不当,同样危险 ///////

====================================
del /f /s /a /q d:*.bak
====================================
上面的指令就是删除指定D:盘上所有目录与子目录中所有加了任何属性的 *.BAK 文件!并且不经过人工确认直接就删!

所以,请不要使用*.* 之后的危险操作。



如果换成楼主要的就是:
====================================
del /f /s /a /q d:autorun.inf
====================================


可以通过for枚举所有盘符来达到自动删除所有盘上指定文件。
作者: redtek     时间: 2006-9-24 05:34
做的一个实验,用echo避免出现意想不到的情况:)


C:\TEMP>copy con test.bat
@ECHO off
FOR %%c in (Z,Y,X,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C) do (
        IF exist %%c: (
                 echo  del /f /s /a /q %%c:*.bak
        )
)



^Z
已复制         1 个文件。

C:\TEMP>test.bat
del /f /s /a /q G:*.bak
del /f /s /a /q F:*.bak
del /f /s /a /q E:*.bak
del /f /s /a /q D:*.bak
del /f /s /a /q C:*.bak
C:\TEMP>
作者: redtek     时间: 2006-9-24 05:36
这是楼主要的自动删除所有盘上的任何目录下的具有任何属性的所有autorun.inf文件:



@ECHO off
FOR %%c in (Z,Y,X,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C) do (
        IF exist %%c: (
                 del /f /s /a /q %%c:autorun.inf
        )
)

[ Last edited by redtek on 2006-9-24 at 05:37 ]
作者: namejm     时间: 2006-9-24 06:59
  类似问题头两天已经有过讨论,请参考这个帖子: [已解决]批处理删除硬盘上所有同名特定文件病毒
作者: kmlxk     时间: 2006-9-24 07:26
呵呵,不好意思哈,一时心切就问了,没往后面翻看~
作者: SunRiseBoy     时间: 2007-6-29 02:15
如果只删除磁盘根目录下的指定文件,For怎么改,不删除子目录的INF(太菜了4楼的没有看懂运行了一下把我的不在根目录下的驱动备份中的autorun.inf删除了)。
作者: lxmxn     时间: 2007-6-29 02:44


  Quote:
Originally posted by SunRiseBoy at 2007-6-29 02:15:
如果只删除磁盘根目录下的指定文件,For怎么改,不删除子目录的INF(太菜了4楼的没有看懂运行了一下把我的不在根目录下的驱动备份中的autorun.inf删除了)。


@echo off
rem 指定的文件 file
set file=a.txt
for %%a in ( c d e f g h i j k l ) do (
    if exist %%a:\%file% del %%a:\%file%
)