AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 110725
Accepted
p.campbell
p.campbell
Asked: 2010-02-09 09:12:40 +0800 CST2010-02-09 09:12:40 +0800 CST 2010-02-09 09:12:40 +0800 CST

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

  • 772

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

这里有powershell选项吗?

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

powershell command-line-interface windows-command-prompt directory
  • 13 13 个回答
  • 200436 Views

13 个回答

  • Voted
  1. Best Answer
    Joey
    2010-02-10T09:31:49+08:002010-02-10T09:31:49+08:00

    如果你想用 来做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 不会出错)。

    • 32
  2. Trevoke
    2010-02-09T09:35:44+08:002010-02-09T09:35:44+08:00

    询问,您将收到: 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 计数文件”。

    • 17
  3. rossnz
    2010-04-07T18:37:41+08:002010-04-07T18:37:41+08:00
    dir /a-d | find "File(s)"
    

    关于使用 PowerShell 进行此类简单文件操作的警告 - 与 cmd.exe 相比,它的速度非常慢,尤其是通过网络连接或目录中有数千个文件时。有关更多信息,请参阅此论坛帖子。

    • 9
  4. John Brooks
    2017-05-31T02:58:48+08:002017-05-31T02:58:48+08:00

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

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

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

    • 9
  5. lorenzog
    2010-02-09T09:14:08+08:002010-02-09T09:14:08+08:00

    dir在底部为您提供总文件数。

    • 7
  6. Garcia
    2012-12-04T05:20:34+08:002012-12-04T05:20:34+08:00

    只计算 dir /B 输出中的行数(包括目录):
    dir /B | find /c /v "~~~"

    只计算文件(没有目录):
    dir /A-D /B | find /c /v "~~~"

    • 3
  7. Kelsey
    2010-02-09T09:21:01+08:002010-02-09T09:21:01+08:00

    在网上找到了这个:

    dir /a-d | find /c ":" > NUMfiles.###
    set /p count=<NUMfiles.###
    echo %count%
    

    我测试过,它似乎工作。

    • 2
  8. Heather M.
    2011-02-25T16:16:03+08:002011-02-25T16:16:03+08:00

    对于那些可能使用上述 Trevoke 的 PowerShell 答案的人(Windows 命令提示符:如何获取当前目录中所有文件的计数?),只是一个警告:根据设计,回显 Get-ChildItem 返回的集合的 Count 属性可能会产生误导性结果如果值为 1 或 0。这是因为 Count 属性仅适用于数组。如果 Get-ChildItem 返回的项目少于 2 个,则结果为标量,并且 .Count 不返回任何内容。要解决此问题,请将其显式转换为数组,例如@(Get-ChildItem C:\Scripts).Count。

    有关详细信息,请参阅http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file或http://www.vistax64.com/powershell/266379 -get-childitem-count-not-working-one-file.html。

    • 2
  9. dyasny
    2010-02-09T09:15:06+08:002010-02-09T09:15:06+08:00

    dir返回底部的文件和目录数

    • 0
  10. Jim B
    2010-02-09T09:57:24+08:002010-02-09T09:57:24+08:00

    DIr当然会工作

    无需在服务器上安装任何东西,但在工作站上安装 powershell,您可以执行以下操作:

    (gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count
    

    该命令将为您提供所有文件(包括系统和隐藏文件),如前所述,如果机器上装有 powershell,您可以简单地

    (GCI c:\*.*).count
    

    请注意,如果您不包括. 您将获得所有文件和所有目录的计数。您将不包括需要添加的隐藏文件和系统文件 -force 将它们全部计数

    • 0

相关问题

  • 资源锁和电源外壳

  • 脚本 - 如何断开远程桌面会话?

  • 如何限制向通讯组发送到外部地址?

  • Powershell对值与数组的作用不同?

  • Windows Powershell Vim 键绑定

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve