Batch file 对某个目录中的文件和文件夹进行计数

Batch file 对某个目录中的文件和文件夹进行计数,batch-file,Batch File,我正在尝试编写一个批处理文件,该文件将计算当前目录中有多少文件和目录 for /r %%i in (dir) do ( if exist %%i\* ( set /a directories=directories+1 ) else ( set /a files=files+1 ) ) echo directories echo files 这是我尝试运行此批处理文件的目录结构: ---directory ---file1 ---f

我正在尝试编写一个批处理文件,该文件将计算当前目录中有多少文件和目录

for /r %%i in (dir) do (
    if exist %%i\* (
        set /a directories=directories+1
    ) else (
        set /a files=files+1
    )
)
echo directories
echo files
这是我尝试运行此批处理文件的目录结构:

---directory
   ---file1
---file2

这将始终返回“2个文件”和“0个目录”。

for/r
将递归搜索目录(默认情况下,它将搜索当前目录)*将返回目录树中的所有文件,
将返回目录树中的所有目录

@echo off

set files=
set directories=

for /r %%a in (*) do set /a files+=1
for /r %%b in (.) do set /a directories+=1

echo files:     %files%
echo directories:   %directories%
请查看“获取命令帮助”页面-

h:\>for /?

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

    Walks the directory tree rooted at [drive:]path, executing the FOR
    statement in each directory of the tree.  If no directory
    specification is specified after /R then the current directory is
    assumed.  If set is just a single period (.) character then it
    will just enumerate the directory tree.
试试这个:

@echo off
set total=0
set dir=0
set files=0
for /f %a in ('dir /b') do (set /a total+=1)
for /f %a in ('dir /b /a:d') do (set /a dir+=1)
set /a files=%total%-%dir%

Echo There are %dir% direcotries and %files% files in the current directory alone
对于子目录,这也不算,您可以使用
for/r
for/r/d


希望这有帮助,Mona。

你想在子目录中包含文件和目录吗?我不确定他是否想在子文件夹中包含目录,因为他避免提及。@Monacraft,我认为他确实想要子目录,因为他正在收集“子文件”(在那里想不出更好的词)。