删除特定类型(扩展名)的所有文件,递归下来使用批处理文件的目录(Delete all files o

2019-08-02 03:15发布

我需要删除所有JPG和TXT文件(例如)在DIR1和DIR2。

我试过了:

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

在一些目录,它的工作; 在别人没有。

例如,这什么也没做:

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

我正在我的第二个片段缺失? 为什么不工作?

Answer 1:

您可以使用通配符与del命令,和/S递归地做到这一点。

del /S *.jpg

附录

@BmyGuest问为什么downvoted答案( del /sc:\*.blaawbg )比我的答案有什么不同。

有运行之间的巨大差异del /S *.jpgdel /SC:\*.jpg 。 而第二是整个驱动器上执行的第一命令从当前位置上执行

在你删除的方案jpg使用第二个命令文件,某些应用程序可能会停止工作,你会最终失去所有家人的照片。 这是完全讨厌,但您的计算机将仍然能够运行。

但是,如果你正在工作的一些项目,并希望删除所有dll文件中myProject\dll ,并运行以下批处理文件:

@echo off

REM This short script will only remove dlls from my project... or will it?

cd \myProject\dll
del /S /Q C:\*.dll

然后,你最终会删除所有dll文件,形成你的C:\驱动器。 所有的应用程序停止工作,你的电脑变得无用,并在下次重新启动你是在第四维,你将陷入永恒远距传物。

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



Answer 2:

我写了一个批处理脚本前一阵子,让您选择一个文件扩展名来删除。 该脚本会看它是在文件夹和所有子文件夹与该扩展名的文件并将其删除。

@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

希望这会进来有用的人谁想要它:)



Answer 3:

你可以用它来删除所有文件中的文件夹和子文件夹:

DEL "C:\Folder\*.*" /S /Q

或者用它来删除特定文件类型,只有:

DEL "C:\Folder\*.mp4" /S /Q 
DEL "C:\Folder\*.dat" /S /Q 


Answer 4:

我没有足够的声誉添加评论,所以我张贴这作为一个答案。 但对于这个命令原来的问题:

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

首先对于缺乏递归语法,它应该是:

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

你可以这样做:

FOR %%p IN (C:\Users\0300092544\Downloads\Ces_Sce_600) DO @ECHO %%p

显示实际输出。



Answer 5:

如果你想在C删除某些.extensions:驱动器使用CMD:

del /s c:\*.blaawbg

我有一个客户是有一个加密的病毒,我需要找到所有垃圾文件并将其删除。



文章来源: Delete all files of specific type (extension) recursively down a directory using a batch file