如何计算 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`
我想知道有多少子文件夹包含一个名为“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`