Windows 命令提示符:如何获取当前目录中所有文件的数量?

Windows 命令提示符:如何获取当前目录中所有文件的数量?

您将使用什么命令来cmd.exe查找当前目录中的文件数量?

这里有 powershell 选项吗?

更新:我希望避免dir,因为我知道当前目录中有 10,000 多个文件。希望避免枚举输出到 cmd 窗口。谢谢!

答案1

如果您想使用它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 ":"
    

    它对用户的区域设置做了一些假设,但并非所有假设都保证是正确的(我留下了一条评论详细说明了其中的问题)并且返回了过多的结果。

一般来说,您需要使用findondir /b来删除所有非文件名的内容,以此方式避免栅栏错误。

因此优雅的变体将是:

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

它将首先输出所有文件名,每行一行。然后计算输出中所有不为空的行。因为文件名不能为空(除非我遗漏了什么,但根据我的测试,Unicode 不会出错)。

答案2

祈求便会得到: http://technet.microsoft.com/en-us/library/ee692796.aspx

计算文件夹中项目的数量

好吧,你知道吗:太阳似乎终于出来了,这意味着我们快要出发了。不过,在此之前,让我们向你展示 Get-ChildItem cmdlet 的最后一个小技巧。有时你真的不需要知道文件夹中的文件太多信息;你真正需要知道的只是特定文件夹中有多少个文件(如果有的话)。以下是快速计算文件夹中文件数的方法:

(Get-ChildItem C:\Scripts).Count

我们在这里做什么?我们只是使用 Get-ChildItem 返回在文件夹 C:\Scripts 中找到的所有项目的集合;因为这是一个集合,所以我们所要做的就是回显 Count 属性的值,该值告诉我们集合中的项目数。请注意括号的使用:我们将 Get-ChildItem 命令括在括号中,以确保 Windows PowerShell 首先获取集合,然后才回显该集合的 Count 属性的值。

当然,您可以在调用 Get-ChildItem 时包含一个过滤器。需要知道 C:\Scripts 文件夹中有多少个 .PS1 文件?好的:

(Get-ChildItem C:\Scripts -filter "*.ps1").Count

仅供参考...我在谷歌上搜索了“powershell 计数文件”。

答案3

我发现最快的方法是在 PS 控制台中运行以下命令。

[System.IO.Directory]::GetFiles($path).Count

其中 $path 是本地路径或 UNC 共享。

答案4

dir在底部显示文件总数。

相关内容