7

我想做一些类似 bash 的事情

kill -9 `cat pid.txt`

在 Windows 中。我试过了

set /p mypid= < pid.txt && taskkill /f /pid %mypid%

但它不起作用,看起来像%mypid%在执行之后被分配了taskkill.

怎么做?(我将从 NSIS 安装脚本调用这个命令,所以我不想.bat为它创建一个单独的文件)。

4

2 回答 2

8

我不确定 pid.txt 的内容是什么,但假设它只是 PID 本身,你可以这样做:

for /f %%x in (pid.txt) do taskkill /f /pid %%x

如果您是从命令行运行它,而不是作为批处理文件的一部分,请将%%x.%x

如果这不是 pid.txt 中的内容,请编辑您的问题以更清楚地说明这一点。

于 2013-06-18T20:28:50.547 回答
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
于 2013-06-19T10:08:29.790 回答