WMIC上次修改的包含在for循环中[重复]

问题描述 投票:4回答:1

我正在尝试获取几乎相同名称的文件的最后修改日期(共同使用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%
        )

您能帮助我更正它还是找到另一种方式来获取此最后修改日期总是yyyymmdd

for-loop batch-file wmic last-modified
1个回答
1
投票

请参阅@Stephan发布的链接。应该在循环SetLocal EnableDelayedExpansion之前使用for...do,并进行一些调整以将日期设为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
© www.soinside.com 2019 - 2024. All rights reserved.