string - 命令行如何将字符串搜索到 %% 变量中
问题描述
我有一个文本文件,包括格式如下的文件名规范,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
)
)
推荐阅读
- java - Android CameraX 裁剪 media.Image?
- html - CSS Cube 没有正确旋转
- python - 为什么在 2 个函数之间传递变量时,变量是 None 而不是?
- vuejs2 - 在 vuejs 的下拉列表中禁用一个链接
- postgresql - PostgreSQL - 单个存档文件是否仅包含集群上特定数据库的信息,还是包含整个集群的信息?
- reactjs - recharts 自定义问题 - 如何调整图表值位置
- android - 什么是“WebViewClient”?
- reactjs - 如何从另一个函数访问状态
- apache-beam - java.io.InvalidClassException:org.apache.flink.api.common.operators.ResourceSpec;字段 cpuCores 的不兼容类型
- terraform - Terraform - 为类型 Map 创建类型约束