创建批处理文件以删除特定大小的文件夹

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 才能使其正常工作。