我正在编写一个bash脚本,该脚本应该重新启动正在运行的进程。我可以使用进程名称(pcm.exe)杀死一个进程。但是,当我要启动该进程时,我希望它从较早运行的进程中获取pcm.exe位置。这是因为我不知道该程序在不同系统上的确切位置。
我有以下脚本:
wmic process where "name='pcm.exe'" get ExecutablePath /FORMAT:LIST
@taskkill /f /im pcm.exe >nul
@timeout /t 10 /nobreak >nul
@start h:/pandora/pcm.exe >nul
wmic成功获取PCM位置:
ExecutablePath=H:\Pandora\PCM.exe
但是如何将响应传递给字符串并运行@start(路径)?
答案 0 :(得分:0)
使用set
命令
setlocal EnableDelayedExpansion
set "zTargetImage=notepad.exe"
set "zBinLocation=0"
for /f "skip=2 tokens=2 delims=," %%A in ('wmic process where "name='!zTargetImage!'" get ExecutablePath^,ThreadCount /format:csv 2^>^&1') do (
set "zBinLocation=%%A"
)
taskkill /f /im !zTargetImage! >nul 2>&1
timeout /t 2 /nobreak >nul
if not "!zBinLocation!"=="0" (
start "" "!zBinLocation!" >nul
)