中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么用for命令删除各个分区中的autorun.inf
作者:
标题: 怎么用for命令删除各个分区中的autorun.inf 上一主题 | 下一主题
kmlxk
初级用户





积分 45
发帖 17
注册 2006-9-23
状态 离线
『楼 主』:  怎么用for命令删除各个分区中的autorun.inf

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

for(....?...) (attrib -s -h -r autorun.inf
del autorun.inf)

2006-9-24 04:53
查看资料  发送邮件  发短消息 网志  OICQ (86565242)  编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

原理:

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枚举所有盘符来达到自动删除所有盘上指定文件。

2006-9-24 05:32
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 3 楼』:  

做的一个实验,用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>

2006-9-24 05:34
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

这是楼主要的自动删除所有盘上的任何目录下的具有任何属性的所有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 ]

2006-9-24 05:36
查看资料  发送邮件  发短消息 网志   编辑帖子
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  

  类似问题头两天已经有过讨论,请参考这个帖子: [已解决]批处理删除硬盘上所有同名特定文件病毒



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-24 06:59
查看资料  发短消息 网志   编辑帖子
kmlxk
初级用户





积分 45
发帖 17
注册 2006-9-23
状态 离线
『第 6 楼』:  

呵呵,不好意思哈,一时心切就问了,没往后面翻看~

2006-9-24 07:26
查看资料  发送邮件  发短消息 网志  OICQ (86565242)  编辑帖子
SunRiseBoy
初级用户





积分 38
发帖 20
注册 2006-7-4
状态 离线
『第 7 楼』:  

如果只删除磁盘根目录下的指定文件,For怎么改,不删除子目录的INF(太菜了4楼的没有看懂运行了一下把我的不在根目录下的驱动备份中的autorun.inf删除了)。

2007-6-29 02:15
查看资料  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  



  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%
)


2007-6-29 02:44
查看资料  发送邮件  发短消息 网志   编辑帖子

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: