Windows
DOS 設置變數僅在執行後可用
我有一個非常簡單的腳本,我想從文本文件中獲取一個值(單行,一個值)並將其傳遞給 taskkill - 它也需要是一個單行,所以我有:
set /p pidtokill=<C:\temp\pid.txt && taskkill /F /PID %pidtokill%
問題是 pidtokill 變數僅在 taskkill 命令執行後更新,例如,如果我執行命令兩次 taskkill 工作,但第一次它將使用儲存在變數中的先前值……為什麼不是為 taskkill 命令“及時”設置 pidtokill 值?
您所看到的是“它的工作方式”(請參閱“一行上的多個命令”部分)。
在批處理文件中,預設行為是一次讀取和展開變數一行,如果您使用 & 在一行上執行多個命令,那麼在執行移至下一行之前,任何變數更改都將不可見
如果你想讓它工作,你需要把你的“單線”放在一個批處理文件中,然後使用“SETLOCAL EnableDelayedExpansion”。當然,此時您不妨分兩行完成。
如果您不依賴批處理文件,在 Powershell 中,您可以在一行中完成,無需變數:
Stop-Process -Id (Get-Content c:\temp\pid.txt)