中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 19:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么用for命令删除各个分区中的autorun.inf
楼 主 怎么用for命令删除各个分区中的autorun.inf 发表于 2006-09-24 04:53 ·  中国 重庆 电信
初级用户
积分 45
发帖 17
注册 2006-09-23 13:24
UID 63469
状态 离线
有多个分区C..D..E.....J,怎么使用批处理文件实现删除各个分区中的autorun.inf(带有隐藏属性)

for(....?...) (attrib -s -h -r autorun.inf
del autorun.inf)
2 发表于 2006-09-24 05:32 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
原理:

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


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


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

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

DEL attributes]] names
ERASE 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枚举所有盘符来达到自动删除所有盘上指定文件。
3 发表于 2006-09-24 05:34 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
做的一个实验,用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>
4 发表于 2006-09-24 05:36 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
这是楼主要的自动删除所有盘上的任何目录下的具有任何属性的所有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 ]
5 发表于 2006-09-24 06:59 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  类似问题头两天已经有过讨论,请参考这个帖子: 批处理删除硬盘上所有同名特定文件病毒
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
6 发表于 2006-09-24 07:26 ·  中国 重庆 电信
初级用户
积分 45
发帖 17
注册 2006-09-23 13:24
UID 63469
状态 离线
呵呵,不好意思哈,一时心切就问了,没往后面翻看~
7 发表于 2007-06-29 02:15 ·  中国 湖北 十堰 郧西县 联通
初级用户
积分 38
发帖 20
注册 2006-07-04 16:50
UID 58001
状态 离线
如果只删除磁盘根目录下的指定文件,For怎么改,不删除子目录的INF(太菜了4楼的没有看懂运行了一下把我的不在根目录下的驱动备份中的autorun.inf删除了)。
8 发表于 2007-06-29 02:44 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
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%
)
论坛跳转: