cmd:将最早的 creationdate 从“WMIC process where name='<name.exe>' get creationdate” 传递到一个进程有 >1 个日期输出的变量中

cmd: Pass oldest creationdate from "WMIC process where name='<name.exe>' get creationdate" into a variable where one process has >1 date outputs

提问人:W365c33n 提问时间:2/16/2023 最后编辑:CompoW365c33n 更新时间:2/16/2023 访问量:111

问:

最终目标是删除属于最早创建的命名进程的临时文件。

当前命令结果:

>wmic process where name='<xyz.exe>' get creationdate


CreationDate

20230209140434.535724+000

20230209140527.350080+000

如何挑出上述最旧的变量,并将其传递到变量中?

我尝试了这里给出的例子

更新

我的代码:

@echo off

for /f %%i in ('wmic process where name^="<xyz.exe>" get creationdate') do (
    for %%b in (%%i) do (
        set "TS=%%i"
    )
)
echo TimeStamp : "%TS%"

以上结果是传递最新的创建日期。

更新2

首先尝试了以下操作:

@echo off
for /f %%i in ('wmic process where name^="xyz.exe" get creationdate ^| sort) do (
    for %%b in (%%i) do (
        set "TS=%%i"
    )
)
echo TimeStamp : "%TS%"

以上返回:

TimeStamp : CreationDate

如果我将代码更改为:

@echo off
for /f %%i in ('wmic process where name^="xyz.exe" get creationdate ^| sort /r) do (
    for %%b in (%%i) do (
        set "TS=%%i"
    )
)
echo TimeStamp : "%TS%"

这将返回我正在寻找的日期。

但是,为什么 Update2 中的第一组代码会返回标头?

变量 批处理文件 cmd wmic

评论

0赞 Compo 2/16/2023
期望我们协助您编写您尝试过的代码。由于你还没有提交它,你似乎在期待别人为你写它。本网站不提供免费的代码编写服务,也不会逐步引导您完成任务。请使用“编辑”链接将缺少的代码以及调试信息添加到问题中。顺便说一句,如果结果还没有按顺序排列,我的本能是通过实用程序传递结果,因为时间的格式应该是可排序的。sort.exe
0赞 W365c33n 2/16/2023
更新以反映我当前的代码
0赞 Compo 2/16/2023
您要求代码对带括号的命令返回的每一行输出执行您的部分。标头是该输出的一部分。顺便说一句,我敢肯定你应该使用 ,而不是.doset "TS=%%b"set "TS=%%i"

答: 暂无答案