Powershell

Windows 命令提示符:如何獲取目前目錄中所有文件的計數?

  • May 30, 2017

您將使用什麼命令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. 對這些要非常小心,因為各種事情都會破壞這一點。

常見錯誤:

  1. 使用find /c /v並嘗試查找文件名中從未包含的內容,例如::. 慣於。工作。可靠。當控制台視窗設置為光柵字型時,您可以獲得這些字元組合。例如,我可以在文件名中包含字元,例如全形變體中的 , 等,然後將其轉換為正常的 ASCII 對應字元,這將破壞這一點:?如果您需要準確的計數,請不要嘗試此操作。
  2. 使用find /c並嘗試查找始終包含在文件名中的內容。顯然,點 ( .) 是一個糟糕的選擇。另一個答案表明
dir /a-d | find /c ":"

它假設了有關使用者語言環境的幾件事,但並非所有這些都保證為真(我已經留下了詳細說明那裡問題的評論)並且返回了一個結果太多。

通常,您希望使用findwhichdir /b刪除所有非文件名內容並以這種方式避免柵欄錯誤。

所以優雅的變體是:

dir /b /a-d | find /c /v ""

這將首先輸出所有文件名,每個文件名一行。然後計算該輸出的所有非空行。由於文件名不能為空(除非我遺漏了什麼,但根據我的測試,Unicode 不會出錯)。

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