【问题标题】:Count number of files in folders计算文件夹中的文件数
【发布时间】:2016-02-25 08:35:06
【问题描述】:

我目前正在工作,我想知道是否有任何方法可以显示每个文件夹(/子文件夹)中的文件数量。会让我的工作轻松很多

如果我使用 CMD 并想计算每个文件夹中的所有文件文件夹,我希望它看起来像这样

C:\Ùsers\Me\Documents:

文件夹 1 - 10 个文件

文件夹 2 - 3 个文件

--> FolderInsideFolder2: 2 个文件

文件夹 3:9 个文件

已经搜索过,但似乎无法找到答案。甚至有可能吗?提前致谢

【问题讨论】:

标签: cmd count directory subdirectory


【解决方案1】:
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=."
SET "dirname="
FOR /f "tokens=1,2,*delims= " %%a IN (
  'dir /s "%sourcedir%\*" ^|findstr /i "\ file(s)"'
 ) DO (
  IF DEFINED DIRNAME (ECHO !dirname! %%a files&SET "dirname=") ELSE (SET "dirname=%%c")
)
GOTO :EOF

您需要更改sourcedir 的设置以适应您的情况。

此代码会为包含一些特殊字符(如!)的目录名生成不正确的目录名,但对于字母数字应该没问题。

如果碰巧有一个包含字符串file(s)的文件名,无疑会失败。

作为一个又快又脏的版本,你可以试试

'dir /s "%sourcedir%\*" |findstr /i "\ file(s)"'

其中%sourcedir%替换为您的目标目录的名称。


遵循 JosefZ cmets:修订版 1,通过拒绝包含

dir /s 行来解决包含字符串“file(s)”的目录名问题
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=."
SET "dirname="
FOR /f "tokens=1,2,*delims= " %%a IN (
  'dir /s "%sourcedir%\*" ^|find /v "<" ^|findstr /i "\ file(s)"'
 ) DO (
  IF DEFINED DIRNAME (ECHO !dirname! %%a files&SET "dirname=") ELSE (SET "dirname=%%c")
)
GOTO :EOF

修订版 2 确保选择报告文件数量的 original 行以两个空格开头(报告文件名匹配“file(s)”的行将以 "nn" 或 "n" 开头,其中 n 是数字)

@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=."
SET "dirname="
FOR /f "delims=" %%A IN (
  'dir /s "%sourcedir%\*" ^|find /v "<" ^|findstr /i "\ file(s)"'
 ) DO (
 FOR /f "tokens=1,2,*delims= " %%a IN ("%%A") DO (
   IF DEFINED DIRNAME (
    SET "line=%%A"
    IF "!line:~0,2!"=="  " (ECHO !dirname! %%a files&SET "dirname=")
   ) ELSE (SET "dirname=%%c")
 )
)
GOTO :EOF

【讨论】:

  • 干得好,除了文件夹名称中的感叹号。但是,如果存在名为 file(s) 的文件夹或文件,则会失败。将(ECHO !dirname! %%a files&amp;SET "dirname=") 更改为(If /I "%%b"=="file(s)" (ECHO !dirname! %%a files&amp;SET "dirname="))。出于好奇:为什么不显示空文件夹,即0 File(s)
  • @JosefZ :使用稍微不同的方法修复。对我来说适用于空目录。您拥有解决故障的技能。我有信心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2016-10-15
  • 1970-01-01
相关资源
最近更新 更多