Обработка ответа команды в Windows Bash
Я пишу сценарий 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 ответов
TL;DR -
Использовать 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
)