我想做一些类似 bash 的事情
kill -9 `cat pid.txt`
在 Windows 中。我试过了
set /p mypid= < pid.txt && taskkill /f /pid %mypid%
但它不起作用,看起来像%mypid%
在执行之后被分配了taskkill
.
怎么做?(我将从 NSIS 安装脚本调用这个命令,所以我不想.bat
为它创建一个单独的文件)。
我不确定 pid.txt 的内容是什么,但假设它只是 PID 本身,你可以这样做:
for /f %%x in (pid.txt) do taskkill /f /pid %%x
如果您是从命令行运行它,而不是作为批处理文件的一部分,请将%%x
.%x
如果这不是 pid.txt 中的内容,请编辑您的问题以更清楚地说明这一点。
以下脚本正在执行您期望的操作,而不依赖于 shell 功能:
OutFile "kill.exe"
Var pid
!define filename "pid.txt"
Section
ClearErrors
FileOpen $0 "${filename}" r
IfErrors 0 readok
DetailPrint "Error to open ${filename}"
goto done
readok:
FileRead $0 $pid
DetailPrint "pid found=$pid"
FileClose $0
ExecWait 'taskkill /F /PID $pid'
done:
SectionEnd