使用batch file,删除目录下的所有特定types的文件

好吧,我知道很多人可能会问这个问题,但是,我似乎无法find我的答案。 我想要做的是,我想删除dir1和dir2中的所有.jpg和.txt文件(例如)。

我做的是:

@echo off FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t 

在一些目录中,它在其他的目录中没有。 就像.eg这样做什么都不做:

 @echo off FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t 

你能帮我一下,我是batch file的新手,这样做是正确的吗? 如果没有,那么正确的方法是什么? 如果是,那么我在第二个片段中错过了什么? 为什么它不工作? thnx任何提示:)

您可以使用通配符del命令和/Srecursion执行。

del /S *.jpg

附录

@BmyGuest问为什么一个低调的答案( del /sc:\*.blaawbg )是什么不同于我的答案。

运行del /S *.jpgdel /SC:\*.jpg很大的区别。 第一个命令从当前位置执行,而第二个命令在整个驱动器上执行。

在使用第二个命令删除jpg文件的情况下,某些应用程序可能会停止工作,最终会丢失所有家庭照片。 这是非常恼人的,但你的电脑仍然能够运行。

但是,如果您正在处理某个项目,并且想要删除myProject\dll所有dll文件,并运行以下batch file:

 @echo off REM This short script will only remove dlls from my project... or will it? cd \myProject\dll del /S /QC:\*.dll 

然后你最终删除所有的dll文件forms的C:\驱动器。 所有的应用程序停止工作,你的电脑变得毫无用处,而且在下一次重启时,你将被传送到第四维,在那里你将被永久卡住。

这里的教训是不要直接在驱动器的根目录(或者在任何其他危险的位置,比如%windir% )运行这样的命令,如果你能避免的话。 始终尽可能在当地运行它们。

我前一段时间写了一个批处理脚本,允许你select要删除的文件扩展名。 该脚本将查找它所在的文件夹以及任何具有该扩展名的文件的所有子文件夹并将其删除。

 @ECHO OFF CLS SET found=0 ECHO Enter the file extension you want to delete... SET /p ext="> " IF EXIST *.%ext% ( rem Check if there are any in the current folder :) DEL *.%ext% SET found=1 ) FOR /D /R %%G IN ("*") DO ( rem Iterate through all subfolders IF EXIST %%G CD %%G IF EXIST *.%ext% ( DEL *.%ext% SET found=1 ) ) IF %found%==1 ( ECHO. ECHO Deleted all .%ext% files. ECHO. ) ELSE ( ECHO. ECHO There were no .%ext% files. ECHO Nothing has been deleted. ECHO. ) PAUSE EXIT 

希望这对有需要的人有用:)

如果您试图删除C:驱动器中的某些.extensions,请使用此cmd:

 del /sc:\*.blaawbg 

我有一个客户,得到一个encryption病毒,我需要find所有的垃圾文件,并删除它们。