繁体   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