如何從命令列將指定資料夾(以及可選的子資料夾)中給定類型(例如 *.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
進一步閱讀
- Windows CMD 命令列的 AZ 索引- 與 Windows cmd 行相關的所有內容的絕佳參考。
- 尋找- 在文件中搜尋文字字串並顯示找到它的所有行。
答案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 dir
、find
和 的參數說明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