从BATCH文件中通过FOR对日期进行排序

时间:2017-10-30 10:59:18

标签: batch-file

要求是我有1个文件夹,并且在该文件夹中有很多 txt文件,并且每天有100个文件着陆和处理,现在我想监视文件中存在多少个文件我在今天的日期运行bat文件时的文件夹。

下面是我一直在使用的脚本,但似乎它正在工作但只取出所有文档而不是今天的文档

@echo off
setlocal enabledelayedexpansion
set c1=0
    for  /f "tokens=*" %%x in ('dir /s /a /b "D:\Flow\Flow1\Flow2\Flow3\KEN*.txt" 2^>nul') do set /a c1+=1

echo.KEN,!c5!

2 个答案:

答案 0 :(得分:0)

这是你的意思吗?

从命令提示符:

(For /F %A In ('Dir/S/W/A-D-S-L "D:\Flow\Flow1\Flow2\Flow3\NGR*.txt" 2^>Nul') Do @Call Set "fC=%dC%"&Set "dC=%A")&Call Echo(%fC%

从批处理文件:

@Echo Off
SetLocal EnableDelayedExpansion
Set "dC="
For /F %%A In ('Dir/S/W/A-D-S-L "D:\Flow\Flow1\Flow2\Flow3\NGR*.txt" 2^>Nul'
) Do Set "fC=!dC!"&Set "dC=%%A"
Echo %fC%
Pause

您也可以选择在%DATE% @ %TIME%行添加5

答案 1 :(得分:0)

查找“今天创建”文件的一个方便的命令是forfiles命令(不经常使用,可能是因为它反直觉的语法和一些奇怪的东西)。将其移至find /c以获取计数,在其周围放置for /f并完成操作:

set "days=0"
REM 0 for "created zero days ago" = "created today"
set count=0
REM for /f %%x in ('forfiles /D %days% /P "D:\Flow\Flow1\Flow2\Flow" /m "KEN*.txt" ^|find /i /c ".txt"') do set count=%%x
echo KEN,%count%

days设置为3以获取超过三天(今天和前两天)的文件 - 可能在周一有用。

(“零天老”的意思是“今天”(不是最后24小时,但是从00:00开始) - 只是其中一个奇怪的事情)