您将使用什么命令来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
。是非常小心这些,因为各种各样的事情都可能破坏它。
常见错误:
使用
find /c /v
并尝试查找文件名中从未包含的内容,例如::
。不会。工作。可靠。当控制台窗口设置为光栅字体时,您能获取这些字符组合。例如,我可以在文件名中包含字符,例如:
,?
等,它们的全角变体,然后它们将转换为它们的正常 ASCII 对应字符,这将破坏这一点。如果您需要准确的计数,请不要尝试此操作。使用
find /c
并尝试找到总是包含在文件名中。显然点 (.
) 不是一个好选择。另一个答案建议dir /a-d | find /c ":"
它对用户的区域设置做了一些假设,但并非所有假设都保证是正确的(我留下了一条评论详细说明了其中的问题)并且返回了过多的结果。
一般来说,您需要使用find
ondir /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
在底部显示文件总数。