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

时间:2017-02-10 12:22:40

标签: batch-file size directory subdirectory

希望删除具有特定大小(150mb)的文件夹(子文件夹)。 我需要的脚本必须搜索不同驱动器上的多个文件夹。 例如

在E:temp /,D:temp /,F:temp /

中删除150mb下的文件夹

再次感谢您的帮助。我不是故意浪费你的时间,我到处搜索并尝试制作自己的剧本但失败了。

1 个答案:

答案 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才能使其正常运行。