首页 > 解决方案 > 命令行如何将字符串搜索到 %% 变量中

问题描述

我有一个文本文件,包括格式如下的文件名规范,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
)

标签: stringwindowsbatch-filecompare

解决方案


将我从评论中的建议落实到您的代码中。还通过直接使用标记来避免延迟扩展(以及从文件名中获取日期字符串的另一种方法(通过在连字符处拆分)):

@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
    )
)

推荐阅读