如何计算 Windows 中具有特定名称的所有子文件夹的数量?

How can I get a count of all sub-folders with a specific name in Windows?

我想知道有多少子文件夹包含一个名为“img”的文件夹,所以如果可能的话,我想对所有名为“img”的子文件夹执行递归计数。

另外,我怎样才能算出一层深?即对于所有名为“img”的文件夹,它看起来只有一个文件夹?

所以,如果我的文件夹结构是:

>folder1
  >img
>folder2
  >subfolder
    >img
>folder3
   >subfolder
      >subsubfolder
        >img
>folder4
  >img

第一部分 return 4,第二个脚本 return 2.

这可以通过 CMD 或使用某些 Windows 工具来完成吗?

我环顾四周,我能找到的最接近的是一个 CLI 脚本,用于将所有文件夹和子文件夹打印到一个文件中:

dir /directory:n /ad > f.txt

from here.

然后我可以将粘贴复制到 Notepad++ 中并进行一些手动处理...但我希望有一个 cleaner/faster 解决方案,以防我将来遇到这个问题。我需要为此写些什么?

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
SET /a onelevelcount=0
FOR /f "delims=" %%a IN (
 'dir /b /ad "%sourcedir%" 2^>nul'
 ) DO (
 IF EXIST "%sourcedir%\%%a\img\." SET /a onelevelcount+=1
)
ECHO one level down=%onelevelcount%
SET /a grandtotal=0
FOR /f %%c IN ('dir /s /ad "%sourcedir%"  2^>nul^|findstr /i /e /r "\img"') DO SET /a grandtotal+=1
ECHO grand total=%grandtotal%

GOTO :EOF

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

至于如何 你会想出来 - 熟能生巧。很多关于 SO 的例子。

在记事本中输入以下代码并保存为.dll

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
SET /a onelevelcount=0
FOR /f "delims=" %%a IN (
 'dir /b /ad "%sourcedir%" 2^>nul'
 ) DO (
 IF EXIST "%sourcedir%\%%a\img\." SET /a onelevelcount+=1
)
ECHO one level down=%onelevelcount%
SET /a grandtotal=0
FOR /f %%c IN ('dir /s /ad "%sourcedir%"  2^>nul^|findstr /i /e /r "\img"') DO SET /a grandtotal+=1
ECHO grand total=%grandtotal%

GOTO :EOF`enter code here`