批量删除文件夹+子文件夹中的所有文件,但某些文件类型除外

时间:2015-05-04 14:51:29

标签: batch-file file-extension subdirectory

我有一个包含数千个子文件夹的文件夹。 有许多文件,如.cfg或.txt,这是不必要的。

我只需要包含.png和.jpg文件的文件夹。 所以程序应该是:

  • 查找除.png和.jpg文件以外的所有文件并将其删除
  • 检查所有空文件夹并将其删除

我找到了以下代码:

How can I delete all files/subdirs except for some files in DOS?

如果我想添加.png和.jpg,我还需要添加什么?

float currentTime = Calendar.getInstance().getTime().getHours() + (Calendar.getInstance().getTime().getMinutes()/60);

似乎不起作用。我还需要文件夹删除器。

2 个答案:

答案 0 :(得分:1)

@echo off

set the_dir=c:\dir_with_images
pushd "%the_dir%"

:: delete files that are not pictures
for /f "tokens=* delims=" %%# in ('dir /b /s /a:-d|findstr /i /v ".jpg .png"') do (
 rem -- remove "ECHO" bellow if everything is OK 
 ECHO del /q /f "%%~f#" 
)

:: delete empty folders
for /f "tokens=* delims=" %%# in ('dir /b /s /a:d|findstr /i /v ".jpg .png"') do (
  :: recursively deletes empty folders .Without /S switch RD should not delete non-empty folders
  RD "%%~f#" >nul 2>nul
)

未经测试.YOu应在开头设置您的路径。删除文件不会被激活' - 只有一个回声。你应该删除评论中提到的ECHO

答案 1 :(得分:0)

最终自己制定了解决方案。

REM Use at your own risk, it does a mass DELETE of everything!

SET ExcludeFiles=(png jpg)     
SET MapDrive=%cd:~0,1%
SET Directory=%~dp0

%MapDrive%:
cd %Directory%

attrib +a *.* /s
echo %date%
for %%i in %ExcludeFiles% do attrib -a *.%%i /s
echo %date%
del %Directory%\*.* /s /a:a /q

echo %date%
attrib +a %Directory%\*.* /s
echo %date%

for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
pause