我有一个文件夹,其中文件被转储时间戳... 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%
答案 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
我只是将yyyy
,mm
,dd
设置为常量,显然 - 只需在适当时选择日期解码器。
请注意,如果需要,您可以在文件掩码前加一个目录名 - 如果结果掩码中有空格或其他混淆字符,则将整个文件掩码括在“兔子耳朵”中。
重要提示:文件掩码仅是主要过滤器。例如,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
)