Windows
如何使用 robocopy 遞歸列出超過一定大小的所有文件?
我覺得很傻,因為 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