Powershell
Windows 命令提示符:如何獲取目前目錄中所有文件的計數?
您將使用什麼命令
cmd.exe
來查找目前目錄中的文件數?這裡有powershell選項嗎?
更新:我希望避免
dir
,因為我知道目前目錄中有 10,000 多個文件。想避免列舉輸出到cmd視窗。謝謝!
如果你想用 來做
cmd
,那麼以下是簡單的方法:set count=0 & for %x in (*) do @(set /a count+=1 >nul) echo %count%
這是假設命令行。在批處理文件中你會做
@echo off setlocal enableextensions set count=0 for %%x in (*) do set /a count+=1 echo %count% endlocal
哪個做得更好。您可以批量刪除
>nul
,因為set /a
如果從批處理文件執行將不會顯示結果 - 它直接從命令行顯示。此外,循環中的%
符號for
必須加倍。我見過很多人嘗試使用
find /c
. 對這些要非常小心,因為各種事情都會破壞這一點。常見錯誤:
- 使用
find /c /v
並嘗試查找文件名中從未包含的內容,例如::
. 慣於。工作。可靠。當控制台視窗設置為光柵字型時,您可以獲得這些字元組合。例如,我可以在文件名中包含字元,例如全形變體中的 , 等,然後將其轉換為正常的 ASCII 對應字元,這將破壞這一點:
。?
如果您需要準確的計數,請不要嘗試此操作。- 使用
find /c
並嘗試查找始終包含在文件名中的內容。顯然,點 (.
) 是一個糟糕的選擇。另一個答案表明dir /a-d | find /c ":"
它假設了有關使用者語言環境的幾件事,但並非所有這些都保證為真(我已經留下了詳細說明那裡問題的評論)並且返回了一個結果太多。
通常,您希望使用
find
whichdir /b
刪除所有非文件名內容並以這種方式避免柵欄錯誤。所以優雅的變體是:
dir /b /a-d | find /c /v ""
這將首先輸出所有文件名,每個文件名一行。然後計算該輸出的所有非空行。由於文件名不能為空(除非我遺漏了什麼,但根據我的測試,Unicode 不會出錯)。