如何在Windows cmd中将文件内容作为命令参数传递?

时间:2013-06-18 15:51:44

标签: windows cmd nsis

我想做像bash这样的事情

kill -9 `cat pid.txt`
在Windows中

。我试过了

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

但它不起作用,在执行%mypid%后看起来taskkill被分配。

怎么做? (我将从NSIS安装脚本中调用此命令,因此我不想为其创建单独的.bat文件。

2 个答案:

答案 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