【发布时间】:2020-08-24 05:13:30
【问题描述】:
我正在尝试获取具有几乎相同名称的文件的最后修改日期(常见的 CompactReg00)。
我希望这个日期对不同的日期设置是安全的,所以我想使用 wmic 命令。 如果我像这样使用它,该命令效果很好:
set filename=CompactReg00_20200504T112430Z
for /f %%p in ('wmic DataFile where "name='C:\\Temp\\Alarm\\Archive\\20200508\\sDiag\\%filename%'" get lastmodified ^| find "+" ') do set "val=%%p"
echo %val%
但是当我想将它包含到另一个 for 循环中以获取所有“CompactReg00”文件的最后修改日期时,我无法获得 %val% 值
这是我的脚本:
for /R %%a IN (*CompactReg00*) DO (
echo %%~na
for /f %%p in ('wmic DataFile where "name='C:\\Temp\\Alarm\\Archive\\20200508\\sDiag\\%%~na'" get lastmodified ^| find "+" ') do set "val=%%p"
echo %val%
echo %%~na_%val%
)
你能帮我更正它或找到另一种方法来获取这个 lastmodified 日期总是 yyyymmdd
【问题讨论】:
-
delayed expansion 问题。也很有用:link
-
如果不将
%%p赋值给变量而是立即使用,则不需要延迟扩展;当然echo %%~na_%%p需要在for /F循环内,但这不会改变任何其他内容,因为它只迭代一次......
标签: for-loop batch-file wmic last-modified