批处理,如何能删除某个文件夹下的所有文件(包括子文件夹下的文件)但是保留文件夹和子文件夹

我是在windowsxp下

autorun.inf是我们电脑使用中比较常见的文件之一 ,其作用是允许在双击磁盘时自动运行指定的某个文件。但是近几年出现了用autorun.inf文件传播木马或病毒,它通过使用者的误操作让目标程序执行,达到侵入电脑的目的,带来了很大的负面影响。

目录

文件组成
[AutoRun]部分的命令及其详解
鉴别方法
应对策略
部分命令简介
展开

编辑本段
文件组成

autorun.inf文件是从Windows95开始的,最初用在其安装盘里,实现自动安装,以后的各版本都保留了该文件并且部分内容也可用于其他存储设备。
其结构有三个部分:[AutoRun] [AutoRun.Alpha] [DeviceInstall]

[AutoRun] //表示AutoRun部分开始
Icon=X:\“图标”.ico //给X盘一个图标
Open=X:\“程序”.exe或者“命令行” //双击X盘执行的程序或命令
shell\“关键字”=“鼠标右键菜单中加入显示的内容” //右键菜单新增选项
shell\“关键字”\command=“要执行的文件或命令行” //选中右键菜单新增选项执行的程序或者命令
[AutoRun]适用于Windows95以上系统与32位以上CD-ROM,必选。
[AutoRun.alpha]适用于基于RISC的计算机光驱,适用系统为Windows NT 4.0,可选。
[DeviceInstall]适用于Windows XP以上系统,可选。
编辑本段
[AutoRun]部分的命令及其详解

1、DefaultIcon
含义:指定应用程序的默认图标。
格式:
DefaultIcon=图标路径名[,序号]
参数:
图标文件名:应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。
序号:当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。
备注:
应用程序的默认图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。
图标路径名的默认目录是设备根目录。
2、Icon
含义:指定设备显示图标。
格式:
Icon=图标路径名[,序号]
参数:
图标文件名:应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。
序号:当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。
备注:
设备显示图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。
图标路径名的默认目录是设备根目录。
当存在应用程序默认图标(DefaultIcon)时,本命令无效。
3、Label
含义:指定设备描述
格式:
Label=描述
参数:
描述:任意文字,可以包括空格。
备注:
设备描述将在windows explorer核心的驱动显示窗口中替代设备的默认描述卷标来显示。
在非windows explorer核心的驱动显示窗口中(例如右击设备选择属性)显示的仍然是设备的卷标。
4、Open
含义:指定设备启用时运行之命令行。
格式:
Open=命令行
(命令行:程序路径名 [参数])
参数:
命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开或使用ShellExecute命令。
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。
5、ShellExecute
含义:
指定设备启用时执行文件。(操作系统支持未知)
格式:
ShellExecute=执行文件路径名 [参数]
参数:
执行文件路径名:设备启用时执行文件路径名。可以是任意格式文件。系统会调用设置的程序执行此文件。
参数:参数,根据执行文件作调整
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。
6、Shell关键字Command
含义:
定义设备右键菜单执行命令行。
格式:
Shell关键字Command=命令行
(命令行:程序路径名 [参数])
参数:
命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开。
备注:
命令行的起始目录是设备根目录和系统的$Path环境变量。
7、Shell关键字
含义:定义设备右键菜单文本。
格式:
Shell关键字=文本
参数:
关键字:用以标记菜单,可以使用任何字符表示,包括空格。
文本:在右键菜单中显示的文本。可以使用任何字符,不能存在空格。
备注:
在同一Autorun.inf文件中,不同右键菜单关键字不同,相同右键菜单关键字相同。
右键菜单文本中可以使用&设定加速键,&&输出一个&。
Shell关键字Command命令Shell关键字两者缺一不可,顺序无所谓。
当不存在Open、ShellExecute与Shell命令时,设备启用时运行第一个设备右键菜单指定命令。
8、Shell
含义:定义设备启用时运行之设备右键命令。
格式:
Shell=关键字
参数:
关键字:标记过的菜单关键字
备注:
Shell指定的关键字可以在AutoRun.inf文件的任意部分。
OpenShellExecuteShell命令后定义的优先级高。
9.action
这个命令用来定义程序的名字,比方说:
[autorun]
shellexecute=rundll32 ght
action=打开文件夹
那么在右键菜单显示的就是"打开文件夹",而执行的命令就是"rundll32 ght"
10.注释
与其他inf文件一样,";"之后的内容会被当做注释,不参与编译.
编辑本段
鉴别方法

这个病毒有着非常明显的外部特征,但是却又常常容易被忽略。之所以容易忽略,是因为它并不会令电脑变慢,所以很多人就不注意到。但是如果我们在双击打开U盘时,不是在当前窗口打开,而是在新窗口中打开,那么则有可能中毒了。这时可以在“我的电脑”中右击盘符,看其最上方的一项命令是什么,如果为“Auto”,而不是正常的“打开”,那么中毒的可能性则进一步增大;但要确认中毒,还需要我们在地址栏中输入E:\autorun.inf(E盘需换成实际的盘符),如果打开的文件中open行后所跟的文件是sxs.xls.exe这样的文件,那么则肯定中毒了。
编辑本段
应对策略

1、在插入U盘时按住键盘 shift 键直到系统提示“设备可以使用”,然后打开U盘时不要双击打开,也不要用右键菜单的打开选项打开,而要使用资源管理器(打开我的电脑,按下上面的“文件夹”按钮,或者开始-所有程序-附件-windows资源管理器)将其打开,或者使用

快捷键winkey+E打开资源管理器后,一定通过左侧栏的树形目录打开可移动设备!(要养成这样的良好习惯)

2、如果盘内有来路不明的文件,尤其是文件名比较诱惑人的文件,必须多加小心;需要特别提示的是,不要看到图标是文件夹就理所当然是文件夹,不要看到图标是记事本就理所当然是记事本,伪装图标是病毒惯用伎俩。

3、要有显示文件扩展名的习惯 。方法:打开“我的电脑”,工具--文件夹选项--查看,去掉“隐藏已知文件类型的扩展名”的勾,建议选择显示扩展名同时选上“显示隐藏文件”,去掉“不显示系统文件”的勾,这样可以对病毒看得更清楚。有图标的诱人的病毒文件基本都是可执行文件,显示文件扩展名之后,通过文件名后的".exe"即可判断出一个文件可执行文件,从而不会把伪装的病毒可执行文件误认为是正常文件或文件夹。
4、最后不管你用什么办法,或者用什么软件,插入U盘然后用这个方法检验你有没有中Autorun.inf型病毒的风险。
下面这个批处理可以检验你插入或打开U盘时是否有激活病毒的风险。运行这个批处理,然后按提示操作。注,批处理使用方法:打开开始菜单-附件-记事本,复制批处理内容进去,文件-另存为-文件名:xxxxxxx.bat,保存类型:所有文件-保存。然后找到你保存的位置,会出现一个批处理文件,双击运行即可。
@echo off&setlocal enabledelayedexpansion
echo 请在U盘和电脑没有病毒的情况下插入一个U盘&set /p "d=请输入U盘的盘符(比如输入H): "
set "d=!d:~0,1!"&set "a=autorun.inf.!random!.tmp"
if exist !d!:\autorun.inf attrib.exe -s -h -r !d!:\autorun.inf&ren !d!:\autorun.inf !a!
(echo [autorun]&echo open=calc.exe&echo shellexecute=calc.exe&echo shell=explore
echo shell\open\command=calc.exe&echo shell\explore\command=calc.exe)>!d!:\autorun.inf
echo 现在删除并重新插入U盘&echo 打开U盘,如果出现"计算器"&echo 说明你有中Autorun.inf类型病毒的机会
echo 完成后按任意键继续&pause>nul
del !d!:\autorun.inf&if exist !d!:\!a! ren !d!:\!a! autorun.inf&goto :eof
推荐的其他方法:
1、推荐一种彻底拒绝Autorun.inf类型病毒的方法.
运行下面这个批处理,就可以保证插入以及打开磁盘时不中病毒(不会占用计算机资源,运行一次即可对当前用户名生效):
@ECHO off
REG.exe DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 /f
REG.exe ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
ECHO HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 []>%temp%\temp.txt
REGINI.exe %temp%\temp.txt
GOTO :eof
如果想再恢复Autorun.inf功能运行这个批处理:
@ECHO off
ECHO HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 [7]>%temp%\temp.txt
REGINI.exe %temp%\temp.txt
REG.exe DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 /f
REG.exe ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
GOTO :eof
2、对于伪装型病毒,可以通过它的可执行属性判断出来。
除通过选择文件夹选项“不隐藏扩展名”外,不喜欢显示所有为文件扩展名的用户还可以通过这种方式将可执行文件的特征--".exe"扩展名显示出来,这样病毒伪装成的文件或文件夹会多出一个".exe"。
以管理员身份运行下面的批处理:
@ECHO off
REG.exe ADD HKCR\exefile /v AlwaysShowExt /t REG_SZ /f
TASKKILL.exe /im explorer.exe /f
START %windir%\explorer.exe
GOTO :eof
要恢复不显示exe扩展名运行这个批处理:
@ECHO off
REG.exe DELETE HKCR\exefile /v AlwaysShowExt /f
TASKKILL.exe /im explorer.exe /f
START %windir%\explorer.exe
GOTO :eof
另一种简单的预防方法

组策略-禁用自动播放
操作步骤为:点击开始→运行→输入gpedit.msc,打开组策略编辑器,浏览到计算机配置→管理模板→系统,在右边窗格中双击“关闭自动播放”,对话框中选择所有驱动器,确定即可。
另一种更为简单的免疫办法
建立txt文本文件,命名为闪存免疫,输入以下代码:
md c:\Autorun.inf\
md c:\Autorun.inf\1234...\
md x:\Autorun.inf\
md x:\Autorun.inf\1234...\(X代表盘符,你有几个盘就可以输入几个)
保存退出,并将TXT文件转化为BAT批处理文件,双击运行,在各个盘符的根目录下会出现Autorun.inf文件夹,并且因为它们的文件夹内有不可删除文件所以该文件夹也无法删除。这样,免疫闪存就做成了。感觉非常棒吧
在桌面上建立一个名为Autorun.inf的文件夹加上只读及隐藏属性,分别放入不同的盘符根目录中同样也可以达到以上目的[1]
对于md c:\Autorun.inf\1234...\命令建立的文件夹,在windows下看到的是Autorun.inf文件夹下有一个123..的文件夹,以后要再删除该类型文件夹可用
rd c:\Autorun.inf\1234...\
来实现。
还有一种保护的方法
运行windows优化大师,系统优化->系统安全优化->禁止光盘、u盘等所有磁盘自动运行->优化,也可以使您的系统更安全。
保护U盘的方法
U盘对病毒的传播要借助autorun.inf文件的帮助,病毒首先把自身复制到u盘,然后创建一个autorun.inf,在你双击u盘时,会根据autorun.inf中的设置去运行u盘中的病毒,我们只要可以阻止autorun.inf文件的创建,那么U盘上就算有病毒也只能躺着睡大觉了,大家可能也想到这个,但是不管给autorun.inf设置了什么属性,病毒都会更改它,我提到的方法就是,在根目录下,删除autorun.inf文件,然后,根目下建立一个文件夹,名字就叫autorun.inf,这样一来,因为在同一目录下,病毒就无能为力,创建不了autorun.inf文件了,以后会不会出新病毒,自动去删文件夹,然后再建立文件就不知道了,但至少现阶段,这种方法是非常有效的。但是,由于这个文件夹可以被改名,因此许多新的木马和病毒采用改名后再创建autorun.inf文件来达到感染U盘的目的。不过对于安全意识强的用户,用这种方法来判断自己的U盘是否遭到感染也未尝不可。不过这种方法也有缺陷。
事实表明,目前已经有新的病毒能够有意识地检测autorun.inf的存在,对于能直接删除的则删之,对于“无法删除”的则用重命名的方式毁之;此时,你可以在autorun.inf文件夹下面,用CMD命令建立畸形文件夹就可以很好的防止autorun.inf被病毒删除了.
还有一种很早就出现的以文件名诱骗用户点击的病毒(如:重要文件.exe,小说.exe)。对于以上这两种传播方式的病毒,仅仅建立autorun.inf文件夹是抵御不了的。
编辑本段
部分命令简介

[AutoRun.alpha]部分的命令与[AutoRun]部分的命令相同,只不过在基于RISC的计算机光驱中,[AutoRun.alpha]优先级高于[AutoRun]
[DeviceInstall]部分命令及其详解
DriverPath
含义:定义搜索驱动程序目录。
格式:
DriverPath=驱动程序路径
参数:
驱动程序路径:驱动程序所在路径,包括其子路径。
备注:
Windows XP以上支持。
仅CD-ROM支持
当系统监测到一个新的设备时,会提示用户寻找设备的驱动程序。当用户点选此CD-ROM时,当[DeviceInstall]部分存在时,系统会按照DriverPath所标记的路径出寻找驱动程序。未标记的路径系统将忽略查找。当[DeviceInstall]部分不存在时,系统将进行完全查找。
如果不希望系统在此CD-ROM中搜索驱动程序,只加一行[DeviceInstall]不加DriverPath命令即可。
系统识别该文件过程如下:
系统在插入U盘的时候会根据这个AUTORUN.INF文件在注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2]下建立一个u盘的关联项,使双击打开指定的程序(如病毒程序)。
Windows 2000/XP下如何删除autorun.inf文件夹在命令提示符中,输入rd (文件夹路径)即可删除文件夹
如文件夹内有内容可把rd替换为deltree来完成删除。
========================================================================
清除autorun病毒的批处理文件代码
u盘插上
首先新建个文本文档,在里面添加以下内容:
@echo on
taskkill /im explorer.exe /f
rem 结束病毒进程(以u.vbe病毒的进程w.exe为例)
taskkill /im w.exe
start reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\EXplorer\Advanced /v ShowSuperHidden /t REG_DWORD /d 1 /f
start reg import kill.reg
del c:\autorun.* /f /q /as
del %SYSTEMROOT%\system32\autorun.* /f /q /as
del d:\autorun.* /f /q /as
del e:\autorun.* /f /q /as
del f:\autorun.* /f /q /as
del g:\autorun.* /f /q /as
del h:\autorun.* /f /q /as
del i:\autorun.* /f /q /as
del j:\autorun.* /f /q /as
del k:\autorun.* /f /q /as
del l:\autorun.* /f /q /as
start explorer.exe
=====到这里为止(这行不用复制)==========================
其次打开我的电脑,在菜单栏里选择“工具-文件夹选项-查看”,将“隐藏已知文件类型的扩展名”前面的勾去掉-确定-退出窗口。
再次将刚才新建的那个文件文档的文件名,由“新建文本文档.txt”改为“u.vbe病毒消除.bat”。
最后直接双击它就能清除这个病毒了!
对于杀毒软件产生的此类文件夹(如超级巡警),可用DOS命令快速干净的删除,方法如下
假设autorun.inf文件夹是在D盘,操作如下: 打开“开始”,选择“运行”,输入“CMD”,打开命令行窗口,在命令行窗口中输入以下命令:
rd /s/q d:\autorun.inf (rd 也可以是rmdir,他们是相同的 ),然后回车即可,注意空格!;
/s 表示删除该目录(文件夹),包括里面所有的东西,也包括歧义文件夹,/q 表示不确认就直接删除。
其他盘照此方法执行即可!! !
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-20
for /R [你要删除的文件夹的绝对路径] %%I in (*.*) do del /s /f %%i
复制保存为.bat文件双击运行.本回答被提问者采纳
第2个回答  2011-06-20
第一种 DEL /S /Q C:\*.*

第二种 RD /S /Q C:\123
MD /S /Q C:\123\123
这样删除文件夹 后再建一个新的不就可以了吗?
第3个回答  2011-06-20
linux下 rm -rf 文件夹名
相似回答