在我的情况下,我正在寻找一种解决方案,其中特定任务将从批处理文件中执行。
在执行相同的批处理文件时,以前由批处理文件启动的task / processid应该只会被杀死。
当前使用命令
taskkill /f /im "notepad.exe"
powershell.exe Start-Process notepad.exe
所有由用户/任何其他进程打开的记事本实例都将关闭。但是,我特别希望该批处理文件关闭由它创建的PID,并关闭相同的PID,以防再次运行此批处理文件。
可能符合此要求的批处理文件应写入带有ProcessName及其PID的文件。对于批处理文件的每次执行,都应查找其中提到的进程ID,如果已经运行则将其关闭,并打开一个新实例并更新存储PID的文件。
任何帮助将不胜感激。 谢谢
答案 0 :(得分:1)
尽管我不推荐使用它,但将其视为彻底的过度杀手-cmd的解决方案:
for /f "usebackq" %%p in (`powershell.exe -nologo -c "(start-process notepad.exe -passthru).id"`) do set pid=%%p