簡體   English   中英

taskkill:不同的行為控制台與腳本

[英]taskkill: different behaviour console vs. script

我正在為Java應用程序編寫一個小的關閉腳本。 我得到了pid,然后嘗試執行以下操作:

taskkill /t /pid !pid!

如果我從控制台運行命令(手動鍵入命令),則一切正常。 我看到關閉例程在Java控制台中執行,然后Java控制台消失了。 有時,幾秒鍾后,我會看到Windows“進程無響應。立即殺死或等待”對話框,但是當Java程序停止時,對話框自動關閉。

如果我使用相同的命令執行bat文件,我會立即看到“進程無響應...”對話框。 我看到控制台輸出:“進程已成功關閉”,但Java控制台仍處於打開狀態。 它甚至沒有啟動關機序列。

編輯:完整的批處理腳本

@echo off
setlocal enabledelayedexpansion
if exist .\lock (
set /p pid=< lock
taskkill /t /pid !pid!
) 

在命令行上!pid! 通常不會擴展,因為已禁用延遲擴展,並且只能通過注冊表ey或使用cmd /V:on來啟用。

所以在命令行上!pid! 將保持不變,並在批處理中將其擴展為pid變量的內容。

編輯當您在cmd行上顯示正確的命令時,批處理中的命令一定是錯誤的。

您應該在set / p行之后添加回顯

Echo pid="!pid!"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM