從命令列計算資料夾和子資料夾中的檔案數

從命令列計算資料夾和子資料夾中的檔案數

如何從命令列將指定資料夾(以及可選的子資料夾)中給定類型(例如 *.mp3)的所有檔案計數到環境變數中?

(請不要使用 PowerShell,只需批次命令)

答案1

set filesCount=0 & for %f in (*) do @(set /a filesCount+=1 > nul)

答案2

計算資料夾和子資料夾中的檔案數

使用以下命令:

dir /b *.mp3 /s 2> nul | find "" /v /c > tmp && set /p count=<tmp && del tmp && echo %count%

環境變數%count%將包含檔案的數量。

筆記:

  • /s如果您不想計算子資料夾中的檔案數量,請刪除。

範例(使用 *.txt)

顯示 17 個檔案的目錄清單:

F:\test>dir /b *.txt /s
F:\test\abc.txt
F:\test\blackwhite.txt
F:\test\cpu.txt
F:\test\interface.txt
F:\test\Lorem ipsum.txt
F:\test\right.txt
F:\test\rights.txt
F:\test\software.txt
F:\test\tabs.txt
F:\test\test.txt
F:\test\this is inside junction.txt
F:\test\unique.txt
F:\test\xyz.txt
F:\test\sub\abc.txt
F:\test\sub\xyz.txt
F:\test\sub with space\junction sub with space.txt
F:\test\sub with space\xyz.txt

運行命令:

F:\test>dir /b *.txt /s 2> nul | find "" /v /c > tmp && set /p count=<tmp && del tmp && echo %count%
17

進一步閱讀

答案3

dir使用和 的組合find來計算文件數量。透過循環將文件儲存到變數中for。將錯誤輸出重定向到nul隱藏File Not Found錯誤。

@echo off
for /f %%i in ('dir *.xlsx /s /b 2^> nul ^| find "" /v /c') do set VAR=%%i
echo %VAR%

/?請參閱使用for dirfind和 的參數說明for

答案4

您可以利用 robocopy 的/L(清單)選項。那你就不需要任何複雜的 for 迴圈或管道。它也非常快。

robocopy c:\mydir c:\dummy /L /E *.mp3 *.txt
  • c:\mydir:將其替換為您要搜尋的目錄的路徑
  • c:\dummy:你可以保留這個,它只是一個虛擬參數,因為我們正在使用而被忽略/L
  • /L:僅列出,不會複製/移動任何內容。
  • /E: 遞歸地包含子目錄。如果您不想搜尋子目錄,可以將其刪除。
  • 如果您不想列印文件和目錄列表,您可以新增/NFL(無文件列表)和/或/NDL(無目錄列表)

您將得到如下所示的不錯的報告。看看Total專欄就知道了。

Source : c:\mydir

Files : *.mp3
        *.txt

--------------------------------------------------

{list of all the matching files}

--------------------------------------------------

            Total    Copied   Skipped  Mismatch    FAILED    Extras
 Dirs :         5         5         0         0         0         0
Files :        89        89         0         0         0         0
Bytes :   3.485 g   3.485 g         0         0         0         0

相關內容