一台机器上 DOS 进程的唯一标识符

一台机器上 DOS 进程的唯一标识符

我使用一台具有不同用户的 Win 10 机器,这些都可以使用同一个 bat 文件。

在 bat 脚本中我需要一个临时文件,该文件具有唯一名称,由该机器上当前进程的标识符组成。因此可以同时存在多个这样的进程。

作为文件名,想要使用 C:\Windows\Temp\???.txt。

问题是???必须是什么。

答案1

答案

如果您想使用 cmd.exe 的 PID,请执行以下操作:

title=uniqueTitle
for /f "tokens=2 USEBACKQ" %f IN (`tasklist /NH /FI "WINDOWTITLE eq uniqueTitle*"`) Do set ourPID=%f
i_view64.exe inputfile.jpg /info=%temp%\%ourPID%.txt

我胡言乱语,因为我不明白这个问题:

在批处理文件运行的上下文中,“当前正在执行的进程”是指命令解释器 (conhost.exe 或 cmd.exe)。如果要获取 i_view64.exe 的进程 ID,则必须先运行它,然后获取进程 ID(这并非易事)。就您而言,您是在创建进程之前请求进程 ID。无法预测在向进程输入命令行参数时它会是什么,因为它尚未启动。

如果您只是想要一个在安全、可靠的位置的唯一临时文件名,那么您应该查看这个问题:

https://stackoverflow.com/questions/27802376/create-unique-file-name-windows-batch

有许多建议的解决方案。

通常,您使用 %TEMP% 来获取系统上的临时位置。然后生成文件名。

类似这样的事情可能对你有用:

%temp%\%username%-%date%-%random%.txt

根据需要进行调整。每个变量都会扩展以创建文件的完整路径。

相关内容