1

我有一个文件夹,其中文件带有时间戳... filename_ver20130405121320.csv

我希望创建一个批处理脚本,以确保在今天创建了 5 个文件。

我猜我将需要使用一个日期限制为今天的 for 循环。

FOR /r %foldername% %%g IN (*.csv) DO (
    echo %%~nxg 
)

使用 forfiles 语句列出文件,是否可以在每次显示文件名时使用计数器和 +=1?

forfiles /S /P %foldername% /m *.csv /d 0 

逻辑是

if number of files in a foldername is less than 5 where file created is today

echo error! missing files

任何帮助将非常感激

机器上返回的日期为 Mon 22/07/2013 使用它来设置日期

:: set date 
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET dd=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET mm=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET setDate=%dd%/%mm%/%yyyy%
4

3 回答 3

0
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET yyyy=2013
SET mm=07
SET dd=22
SET count=0
FOR /f %%g IN ('dir /b /a-d *%yyyy%%mm%%dd%????.csv') DO (
 SET filename=%%~ng
 SET filename=!filename:~-12,-4!
 if "!filename!"=="%yyyy%%mm%%dd%" SET /a count+=1
)
ECHO %count%
GOTO :EOF

显然,我只是将yyyy, mm,设置dd为常量 - 只需根据需要插入您的日期解码器即可。

请注意,如果需要,您可以在文件掩码前加上目录名 - 如果结果掩码中有空格或其他混淆字符,则将整个文件掩码包含在“兔子耳朵”中。

重要提示:文件掩码只是一个主要过滤器。将dir列出一个名为filename_ver2013040512132.csv例如的文件(缺少 1 位数字......),因此仍然需要进行处理的体操。

我还假设文件名相对健全。可能!在文件名中会导致 conniptions。

于 2013-07-22T05:51:31.450 回答
0

这可能有效(未经测试):编辑以仅检查 yyyymmdd 格式的日期

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set datestamp=%dt:~0,8%
for /f %%a in ('dir "*ver%datestamp%*.csv" /b /a-d^|find /c /v "" ') do (
if %%a LSS 5 echo files are missing
)
于 2013-07-22T10:29:37.090 回答
0

我想出了这个,它似乎到目前为止工作

for /f "tokens=2" %%I in ("%date%") do set today=%%I
for /f "tokens=5" %%G in ('dir %foldername% /a-d ^| find "%today%"') do (
set /a fileCounter += 1 
echo %%G
)

echo %fileCounter%
于 2013-07-22T05:59:05.170 回答