Windows

如何使用 robocopy 遞歸列出超過一定大小的所有文件?

  • December 9, 2020

我覺得很傻,因為 robocopy 是伺服器管理 101;但我似乎在列出文件時遇到了問題。

我希望列出目錄和子目錄中大小超過 10MB 的所有文件。

根據docs,這應該是可行的:

robocopy c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl

但是當我執行它時,會返回一個錯誤“未指定目標目錄”,如果您使用列表 (/L) 選項,我認為這不是必需的。

另外,如果我包含與目標相同的目錄,如下所示:

robocopy c:\ c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl

沒有返回任何東西;但如果我刪除無目錄列表 (/ndl),我會看到所有目錄的列表。

所以我的問題是:如何使用 robocopy 在目錄樹結構中列出超過 10MB 的文件,僅此而已?

謝謝!

如果您不依賴於robocopy,則可以使用for’s 變數替換來實現:-

@for /f "tokens=*" %F in ('dir /s /b /a:-d c:\') do @(
   if %~zF geq 10485760 echo %F
)

dir /s /b /a:-d c:\以裸格式 ( ) 為您提供/s所有非目錄 ( /a:-d)的遞歸列表 ( ),以便於解析。c:\``/b

for循環遍歷該列表("tokens=*"如果您的路徑中有空格,則需要),讓您~z在任何子命令中使用其變數修飾符獲取文件大小的引用(例如if與您想要的大小進行比較)。

’s 用於抑制命令的回顯,如果您之前呼叫過(例如,在批處理文件中),@可以省略。@echo off

引用自:https://serverfault.com/questions/307573