0

我想弄清楚有多少个子文件夹包含一个名为“img”的文件夹,所以我想实现一个名为img的所有子文件夹的递归计数,如果这是可能的话。如何在Windows中获得具有特定名称的所有子文件夹的计数?

另外,我该如何做一个深度的计数?即它只会查看所有名为“img”的文件夹的深度文件夹?

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

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

第一部分将返回4,第二个脚本将返回2.

这是可能要么从CMD或某些窗口工具?

我周围有一看,我能找到最接近的是一个CLI脚本打印的所有文件夹和子文件夹到文件:

dir /directory:n /ad > f.txt 

from here

然后,我可以将粘贴到记事本++中,然后执行一些手动操作......但我希望有一个更清洁/更快的解决方案,以防万一我在未来遇到过这种情况。任何人都可以帮我解决我需要为此写的东西,以及我该如何解决这个问题?

谢谢:)。

回答

1
@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的例子。

-2

类型上的记事本的如下因素代码并将其保存为的.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` 
相关问题