Windows 如何在不停止批处理执行的情况下停止cmd中当前正在运行的进程?
我有一个循环批处理文件,它运行另一个进程 如果进程抛出错误,它基本上会重新启动自己 以下是简短的版本:Windows 如何在不停止批处理执行的情况下停止cmd中当前正在运行的进程?,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个循环批处理文件,它运行另一个进程 如果进程抛出错误,它基本上会重新启动自己 以下是简短的版本: :start C:\Squid\bin\squid.exe timeout 1 goto start 上面代码的问题是,有时我需要强制重新启动当前正在运行的进程 现在,如果我按ctrl+c,它实际上会终止批处理本身并关闭窗口,这不是我想要的 我本可以用taskkill命令编写另一个批处理文件,但我不能,因为这个进程有许多实例具有不同的进程ID 谢谢你的帮助 实际上我可以使用start/wai
:start
C:\Squid\bin\squid.exe
timeout 1
goto start
上面代码的问题是,有时我需要强制重新启动当前正在运行的进程
现在,如果我按ctrl+c,它实际上会终止批处理本身并关闭窗口,这不是我想要的
我本可以用taskkill命令编写另一个批处理文件,但我不能,因为这个进程有许多实例具有不同的进程ID
谢谢你的帮助 实际上我可以使用start/wait命令,它与上面的命令相同,因为它将等待文件执行,但将在不同的窗口中打开它,我可以轻松关闭并强制程序重新启动,而无需终止批处理
:start
start /wait C:\Squid\bin\squid.exe
timeout 1
goto start
注意:关闭批次后,可能会提示终止执行。我在这里找到了解决方法:
rem绕过“终止批处理作业”提示。
如果“%~1”==”-已修复\u CTRL\u C”(
REM删除-FIXED_CTRL_C参数
移位
)否则(
REM使用运行批处理如果您控制squid.exe的源,请注册控制台控制处理程序或CSIGBREAK
处理程序。然后当用户关闭控制台时,squid.exe有5秒钟时间处理事件,以正常退出代码退出,而不是以状态控制\U C\U退出
异常退出文档明确要求,强烈建议您始终提供title参数作为第一个参数开始,因为未记录的行为可能导致它吞并其他参数。
rem Bypass "Terminate Batch Job" prompt.
if "%~1"=="-FIXED_CTRL_C" (
REM Remove the -FIXED_CTRL_C parameter
SHIFT
) ELSE (
REM Run the batch with <NUL and -FIXED_CTRL_C
CALL <NUL %0 -FIXED_CTRL_C %*
GOTO :EOF
)