我想让这个批处理文件计算子目录中的文件并显示总文件和目录。但是,我不熟悉语法。
@ECHO OFF
SET "rootpath=C:\Users\RX\Documents\01.00 Meters\100\EMC\EMC 15Aug2016 Level4\res"
SET tcnt=0
FOR /D %%D IN ("%rootpath%\*") DO (
SET cnt=0
FOR /F %%K IN ('DIR /A-D /S "%%D" 2^>NUL ^| FIND "File(s)" ^|^| ECHO 0') DO (
SET /A cnt+=%%K
)
SETLOCAL EnableDelayedExpansion
ECHO %%D: !cnt!
tcnt+=%%cnt
ENDLOCAL
)
ECHO !tcnt!
cmd /k
答案 0 :(得分:1)
这将从rootpath
开始递归计算所有文件和所有目录@echo off
SET rootpath=c:\temp
set cnt_files=0
set cnt_dirs=0
rem count all files in dir and subdirs
for /f %%a in ('dir /s /B /a-d "%rootpath%"') do set /A cnt_files+=1
rem count all folders in dir and subdirs
for /f %%a in ('dir /s /B /ad "%rootpath%"') do set /A cnt_dirs+=1
echo files:%cnt_files%
echo dirs:%cnt_dirs%
pause
输出结果为s.th.像这样:
files:4051
dirs:1559
我希望这能为你做到。
答案 1 :(得分:1)
这是一种使用递归的方法。
它来自编程而不是 sys admining ;它使用一个函数( batch 等价物是label),它将文件夹作为参数,将该文件夹中的文件号与全局变量相加,然后为每个子函数调用自身-folder(每次调用都会增加文件夹编号)。
_FOLDER
只需将var get_article = $('title, p, img');
变量设置为您希望其文件和子目标计数的文件夹。
注意:在包含大量文件和子文件夹的文件夹中,它可能会产生 StackOverflow :)。
答案 2 :(得分:0)
这应该只提供总数:
@Echo Off
SetLocal EnableDelayedExpansion
(Set selDir=C:\Users\RX\Documents\01.00 Meters\100\EMC\EMC 15Aug2016 Level4\res)
Set i=3
For /F "EOL=- Tokens=1-3" %%I In (
'RoboCopy /L /E /NFL /NDL /NJH "%selDir%" null *.*') Do (
If %%J==: (Set/A i-=1
If !i! GEq 1 Echo(%%I : %%K))
Pause
这应该给出一个输出,显示相对目录名称,后跟各自的文件计数。
@Echo Off
SetLocal
(Set selDir=C:\Users\RX\Documents\01.00 Meters\100\EMC\EMC 15Aug2016 Level4\res)
Set "i=0"
For /F "Delims=" %%I In ('Dir/B/AD/S "%selDir%"') Do (Set/A i+=1
Set "$d=%%I"
Call Set "$d[%%i%%]=%%$d:%seldir%\=%%"
)
Echo(
For /F "Tokens=1* Delims==" %%I In ('Set $d[') Do (Set "i=0"
For /F "Delims=" %%K In ('Dir/B/A-D "%selDir%\%%J\*.*"2^>Nul') Do Set/A i+=1
Call Echo( %%J : %%i%%)
Echo(
Pause
EndLocal
Exit/B