Batch file 统计特定月份批处理文件中的文件数

Batch file 统计特定月份批处理文件中的文件数,batch-file,Batch File,我是批处理文件方面的新手。现在,当我运行.bat时,它将从6个不同的文件夹生成文件数 @echo off &setlocal echo Please Enter Cycle Month (MM format) set /p month= echo. echo In the month of %month%, echo. set "startfolder1=\\L99016\SBM3276\Backup" set /a counter1=0 for /r "%startfolder1

我是批处理文件方面的新手。现在,当我运行.bat时,它将从6个不同的文件夹生成文件数

@echo off &setlocal

echo Please Enter Cycle Month (MM format)
set /p month=
echo.

echo In the month of %month%,
echo.

set "startfolder1=\\L99016\SBM3276\Backup"
set /a counter1=0
for /r "%startfolder1%" %%i in (*.txt) do set /a counter1+=1
echo SBM3276 have %counter1% files.
echo. 

set "startfolder2=\\L99016\SBM3277\Backup"
set /a counter2=0
for /r "%startfolder2%" %%i in (*.txt) do set /a counter2+=1
echo SBM3277 have %counter2% files.
echo.

set "startfolder3=\\L99016\SBM3461\Backup"
set /a counter3=0
for /r "%startfolder3%" %%i in (*.txt) do set /a counter3+=1
echo SBM3461 have %counter3% files.
echo. 

set "startfolder4=\\L99016\SBM3462\Backup"
set /a counter4=0
for /r "%startfolder4%" %%i in (*.txt) do set /a counter4+=1
echo SBM3462 have %counter4% files.
echo.

set "startfolder5=\\L99016\SBM3697\Backup"
set /a counter5=0
for /r "%startfolder5%" %%i in (*.txt) do set /a counter5+=1
echo SBM3697 have %counter5% files.
echo. 

set "startfolder6=\\L99016\SBM3934\Backup"
set /a counter6=0
for /r "%startfolder6%" %%i in (*.txt) do set /a counter6+=1
echo SBM3934 have %counter6% files.
echo.

pause
cmd.exe上的输出将是:

Please Enter Cycle Month (MM format)
01

In the month of 01,
SBM3276 have 6560 files.
SBM3277 have 6372 files. 
SBM3461 have 6228 files. 
SBM3462 have 6179 files. 
SBM3697 have 6372 files.
SBM3934 have 6372 files. 
问题是,如何筛选出用户输入的指定月份的文件数

请帮忙

提前非常感谢

***注意:上面的代码计算文件夹中的所有文件以及所有日期。我只想要一个具体的月份。请帮忙

@echo off
setlocal enabledelayedexpansion
set /p "inp=Month [MM]: "
FOR %%i in (*) do (
  set "dt=%%~ti"
  if "!dt:~3,2!"=="%inp%" echo %%i
)  
~t
修饰符提供日期。提取要比较的月份部分

您可以在
中阅读有关修改器的信息,以获取/?


正如aschipfl所指出的:“请注意,~t修饰符给出的日期格式取决于系统的区域/语言环境设置,因此可能需要相应地调整子字符串扩展代码…”


如果需要独立于区域设置的解决方案,可以调整的最后一部分。(虽然
wmic
比只获取子字符串慢得多)

我不清楚您的问题,但您似乎已经拥有了所需的一切。我错过什么了吗?嗨,佩德罗!我在最后一段加了一个注释。计数器5增加两次对吗?您也在5和6中显示counter2值…您可以使用
for
循环,而不是为每个目录复制相同的代码部分,只包含一次:
for/D/R“\\L99016”%%D in(“SBM*”)do(…)
;在循环体中,使用“%%~fD\Backup”访问子目录。当前迭代目录的名称;然后应该删除代码段的
/R
参数;相反,让%%I的te
循环遍历
“%%fD\Backup\*.txt”
…注意,
~t
修饰符给出的日期格式取决于系统的区域/语言环境设置,因此可能需要相应地调整子字符串扩展代码…@aschipfl是-值得一提。各位专家。谢谢你分享这些知识@Stephan如何在当前源代码中添加您的代码?我在里面添加了你的代码,但它没有任何作用。。。