【问题标题】:Create Batch file to delete folders that are a certain size创建批处理文件以删除一定大小的文件夹
【发布时间】:2017-02-10 12:22:39
【问题描述】:

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

删除 E:temp/ , D:temp/ ,F:temp/ 中150mb以下的文件夹

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

【问题讨论】:

  • 显示您尝试过的脚本作为您自己努力的标志!
  • Dim objFD Set objFD = CreateObject("Scripting.FileSystemObject") Set objSelectedFolder = objFD.GetFolder("I:\Movies") Set colSubfolders = objSelectedFolder.SubFolders For Each objSubfolder In colSubfolders If objSubfolder.Size
  • 文件夹没有大小,报告的大小是其中包含的所有文件的累积值。出于这个原因,您应该重新表述您的问题,以便在附加代码时准确说明您打算做什么。
  • @Alex Please edit 将代码输入您的问题。请注意,这不是批处理,而是 VBScript(我认为)。
  • 是的,我知道..我对此很陌生

标签: batch-file size directory subdirectory


【解决方案1】:
@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 才能使其正常工作。

【讨论】:

  • 感谢您的帮助 npocmaka,我必须学习批处理语言。它非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2013-11-17
  • 2023-03-20
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2023-01-10
相关资源
最近更新 更多