文件存在条件今天的日期

时间:2013-07-22 02:13:55

标签: batch-file

我有一个文件夹,其中文件被转储时间戳... 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%

3 个答案:

答案 0 :(得分: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

我只是将yyyymmdd设置为常量,显然 - 只需在适当时选择日期解码器。

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

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

我也假设相对理智的文件名。 !可能导致一致。

答案 1 :(得分: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%

答案 2 :(得分: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
)