创建批处理文件以删除特定大小的文件夹
Create Batch file to delete folders that are a certain size
希望删除特定大小 (150mb) 的文件夹(以及子文件夹)。
我需要的脚本必须搜索不同驱动器上的多个文件夹。
例如
删除 E:temp/ , D:temp/ ,F:temp/
中 150mb 以下的文件夹
再次感谢您的帮助。我不想浪费你的时间,我到处搜索并尝试制作我自己的脚本但失败了。
@echo off
set "150mb=157286400"
set "root_dir=E:\RootDir"
setlocal enableDelayedExpansion
:: recursive listing of the folders.
for /d /r "%root_dir%\" %%# in ("*") do (
rem echo %%~f#
call :getSize %%#
rem echo !size!
if !size! equ !150mb! (
echo rd /s /q "%%~f#"
)
)
exit /b 0
:getSize
setlocal enableextensions disabledelayedexpansion
set "target=%~1"
if not defined target set "target=%cd%"
set "size=0"
for /f "tokens=3,5" %%a in ('
dir /a /s /w /-c "%target%"
^| findstr /b /l /c:" "
') do if "%%b"=="" set "size=%%a"
endlocal & (
set size=%size%
)
文件夹大小功能被无耻盗用。请注意,在纯批处理中,您只能一口气获得 file/folder 的大小 - 大小在脚本的开头是硬编码的,但您可以更改它。在这一行 echo rd "%%~f#"
目标文件夹仅被回显。您需要删除 echo
才能使其正常工作。
希望删除特定大小 (150mb) 的文件夹(以及子文件夹)。 我需要的脚本必须搜索不同驱动器上的多个文件夹。 例如
删除 E:temp/ , D:temp/ ,F:temp/
中 150mb 以下的文件夹再次感谢您的帮助。我不想浪费你的时间,我到处搜索并尝试制作我自己的脚本但失败了。
@echo off
set "150mb=157286400"
set "root_dir=E:\RootDir"
setlocal enableDelayedExpansion
:: recursive listing of the folders.
for /d /r "%root_dir%\" %%# in ("*") do (
rem echo %%~f#
call :getSize %%#
rem echo !size!
if !size! equ !150mb! (
echo rd /s /q "%%~f#"
)
)
exit /b 0
:getSize
setlocal enableextensions disabledelayedexpansion
set "target=%~1"
if not defined target set "target=%cd%"
set "size=0"
for /f "tokens=3,5" %%a in ('
dir /a /s /w /-c "%target%"
^| findstr /b /l /c:" "
') do if "%%b"=="" set "size=%%a"
endlocal & (
set size=%size%
)
文件夹大小功能被无耻盗用echo rd "%%~f#"
目标文件夹仅被回显。您需要删除 echo
才能使其正常工作。