WMIC lastmodified 包含在 for 循环中
WMIC lastmodified include in for loop
我正在尝试获取具有几乎相同名称(共同的 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
参考@Stephan 发布的 link 你应该在循环 for...do
之前使用 SetLocal EnableDelayedExpansion
并进行一些调整以获得日期 yyyymmdd
:
@echo off
SetLocal EnableDelayedExpansion
@for /R %%a IN (*CompactReg00*) DO (
echo "%%~nxa"
@for /f %%p in ('wmic DataFile where "name='C:\Temp\Alarm\Archive\20200508\sDiag\%%~nxa'" get lastmodified ^| find "+" ') do (
set "val=%%p"
echo "!val!"
set "year=!val:~0,4!"
set "month=!val:~4,2!"
set "day=!val:~6,2!"
echo "%%~na_!val!"
echo !year!!month!!day!
)
)
pause
我正在尝试获取具有几乎相同名称(共同的 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
参考@Stephan 发布的 link 你应该在循环 for...do
之前使用 SetLocal EnableDelayedExpansion
并进行一些调整以获得日期 yyyymmdd
:
@echo off
SetLocal EnableDelayedExpansion
@for /R %%a IN (*CompactReg00*) DO (
echo "%%~nxa"
@for /f %%p in ('wmic DataFile where "name='C:\Temp\Alarm\Archive\20200508\sDiag\%%~nxa'" get lastmodified ^| find "+" ') do (
set "val=%%p"
echo "!val!"
set "year=!val:~0,4!"
set "month=!val:~4,2!"
set "day=!val:~6,2!"
echo "%%~na_!val!"
echo !year!!month!!day!
)
)
pause