计算特定月份批处理文件中的文件

时间:2016-04-22 09:29:10

标签: 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%" %%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. 

问题是,如何过滤掉仅计算指定月份中来自用户输入的文件数?

请帮忙。

非常感谢你!

***注意:上面的代码会计算包含所有日期的文件夹中的所有文件。我只想要一个特定的月份。请帮忙!

1 个答案:

答案 0 :(得分:3)

@echo off
setlocal enabledelayedexpansion
set /p "inp=Month [MM]: "
FOR %%i in (*) do (
  set "dt=%%~ti"
  if "!dt:~3,2!"=="%inp%" echo %%i
)  

~t修饰符为您提供日期。提取月份部分进行比较。

您可以在for /?

中阅读有关修饰符的内容

aschipfl说明:“请注意,~t修饰符给出的日期格式取决于系统的区域/区域设置,因此可能需要相应地调整子字符串扩展代码......”< / p>

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

相关问题