根据重复发生的subdir计算子目录中文件的脚本

时间:2013-04-16 08:07:07

标签: windows batch-file

我正在寻找一个批处理脚本,让我只计算某个子目录中的文件数量。

我有一个包含各种项目(300+)的目录树,我只查找重新编目子目录中的文件数量。

目前我正在使用mtee(小程序将cmd输出还原为txt文件)和dir计算子目录并在excel中进行手动搜索。

我想知道是否有办法用批处理脚本执行此操作。

例如:每个项目都有目录提案和子目录禁止提议。我想根据directorytree

计算禁止提案中的文件数量

4 个答案:

答案 0 :(得分:0)

阅读HELP FORHELP SET并尝试以下代码

@echo off
setlocal enabledelayedexpansion
for /r /d %%d in (*) do (
  call :countf "%%d\nogo"
)
goto :eof

:countf
set count=0
for %%f in ("%~1\*") do (
    set /a count+=1
  )
echo %~1 has !count! files
goto :eof

答案 1 :(得分:0)

试试这个:

@echo off &setlocal
set "startfolder=x:\proposals\no-go proposals"

set /a counter=0
for /r "%startfolder%" %%i in (*) do set /a counter+=1
echo %counter% files found in "no-go proposals" .

答案 2 :(得分:0)

for /f %%i in ('dir /s/b/a-d "c:\project"^|find /c "\no-go-dirname\"') do ECHO nogocount=%%i

嗯,这是批处理文件中的行。如果您是在提示符下运行它,则每个%%都会变为%

执行所有文件名的目录列表,/a-d不是目录名,/s包括基本形式的子目录/b,因此没有标题或预告片。使用FIND对此进行过滤,并/c计算包含字符串“\no-go-dirname\”的行,并将计数分配给%%i

答案 3 :(得分:0)

很高兴看到这么多替代品,而且所有这些都是无用的,但这是我的版本。

dir /s/b /a-d | find /c /v "" 

在需要文件计数的目录中运行此命令将仅返回计数。