我有一个文本文件,其中包含格式如下的文件名规范,filename-yyyymmdd
来源.txt
IMG-20190601
IMG-20190602
IMG-20190603
...
我想阅读此文件,以便将日期与参考日期进行比较,并根据结果执行一些操作。 IMG
总是相同的,只是日期在变化。
试图在我正在阅读的每一行中找到文件名日期,以将其与今天进行比较。
我没有成功找到正确的语法,我发现提取子字符串可以通过以下方式完成
set SUBSTRING=%VAR:~POSITION,SIZE%
但它不适用于%%variable
类型。
欢迎任何帮助。
我的代码:
set comparedate=20190702
set /A i=0
for /F "usebackq delims=" %%a in (source.txt) do (
set /A i+=1
rem call echo %%i%%
rem call echo %%a
set datefile=%%a:~4,8 # the line that is not working
if %datefile% geq %comparedate% (goto here) else (goto there)
:here
echo do something
:there
echo do something else
)
从注释到您的代码中实现了我的建议。还通过直接使用令牌避免了延迟扩展(以及另一种从文件名中获取日期字符串的方法(通过在连字符处拆分((:
@echo off
set comparedate=20190702
set /A i=0
for /F "tokens=1,* delims=-" %%a in (source.txt) do (
ECHO FileDate=%%b
ECHO FileName=%%a-%%b [in case you need it]
if "%%b" geq "%comparedate%" (
echo do something
) else (
echo do something else
)
)