使用batchfile / Powershell启动特定过程并写入其PID

时间:2019-01-29 08:56:21

标签: powershell batch-file cmd

在我的情况下,我正在寻找一种解决方案,其中特定任务将从批处理文件中执行。

在执行相同的批处理文件时,以前由批处理文件启动的task / processid应该只会被杀死。

当前使用命令

taskkill /f /im "notepad.exe"
powershell.exe Start-Process notepad.exe

所有由用户/任何其他进程打开的记事本实例都将关闭。但是,我特别希望该批处理文件关闭由它创建的PID,并关闭相同的PID,以防再次运行此批处理文件。

可能符合此要求的批处理文件应写入带有ProcessName及其PID的文件。对于批处理文件的每次执行,都应查找其中提到的进程ID,如果已经运行则将其关闭,并打开一个新实例并更新存储PID的文件。

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

尽管我不推荐使用它,但将其视为彻底的过度杀手-cmd的解决方案:

for /f "usebackq" %%p in (`powershell.exe -nologo -c "(start-process notepad.exe -passthru).id"`) do set pid=%%p