批量删除文件夹+子文件夹中的所有文件,某些文件类型除外
Batch to remove all files in folder + subfolder except some filetypes
我有一个包含数千个子文件夹的文件夹。
有很多文件,例如 .cfg 或 .txt,这些都是不必要的。
我只需要包含 .png 和 .jpg 文件的文件夹。
所以程序应该是:
- 查找除 .png 和 .jpg 文件之外的所有文件并删除它们
- 检查所有空文件夹并删除它们
我找到了以下代码:
How can I delete all files/subdirs except for some files in DOS?
如果我想添加 .png 和 .jpg,我需要添加什么?
attrib +r +s *.png
attrib +r +s *.jpg
del *.*
attrib -r -s *.bat
attrib -r -s *.jpg
好像不行。我还需要文件夹删除器。
@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
)
未测试。您应该在开头设置您的路径。删除文件不是 'activated' - 只是一个回声。您应该删除评论中提到的 ECHO
。
最后自己解决了
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
我有一个包含数千个子文件夹的文件夹。 有很多文件,例如 .cfg 或 .txt,这些都是不必要的。
我只需要包含 .png 和 .jpg 文件的文件夹。 所以程序应该是:
- 查找除 .png 和 .jpg 文件之外的所有文件并删除它们
- 检查所有空文件夹并删除它们
我找到了以下代码:
How can I delete all files/subdirs except for some files in DOS?
如果我想添加 .png 和 .jpg,我需要添加什么?
attrib +r +s *.png
attrib +r +s *.jpg
del *.*
attrib -r -s *.bat
attrib -r -s *.jpg
好像不行。我还需要文件夹删除器。
@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
)
未测试。您应该在开头设置您的路径。删除文件不是 'activated' - 只是一个回声。您应该删除评论中提到的 ECHO
。
最后自己解决了
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