我想做像bash这样的事情
kill -9 `cat pid.txt`
在Windows中。我试过了
set /p mypid= < pid.txt && taskkill /f /pid %mypid%
但它不起作用,在执行%mypid%
后看起来taskkill
被分配。
怎么做? (我将从NSIS安装脚本中调用此命令,因此我不想为其创建单独的.bat
文件。
答案 0 :(得分:7)
我不确定pid.txt的内容是什么,但假设它本身只是PID,你可以这样做:
for /f %%x in (pid.txt) do taskkill /f /pid %%x
如果您从命令行运行该操作,而不是批处理文件的一部分,请将%%x
替换为%x
。
如果那不是pid.txt中的内容,请编辑您的问题以便更清楚。
答案 1 :(得分:1)
以下脚本正在按预期执行操作,而不依赖于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