希望删除具有特定大小(150mb)的文件夹(子文件夹)。 我需要的脚本必须搜索不同驱动器上的多个文件夹。 例如
在E:temp /,D:temp /,F:temp /
中删除150mb下的文件夹再次感谢您的帮助。我不是故意浪费你的时间,我到处搜索并尝试制作自己的剧本但失败了。
答案 0 :(得分:0)
@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%
)
文件夹大小功能被无耻地窃取from here。请注意,在纯批次中,您只能在咬合中获取文件/文件夹的大小 - 大小在脚本的开头是硬编码的,但您可以更改它。在此行echo rd "%%~f#"
上,目标文件夹仅被回显。您需要删除echo
才能使其正常运行。