Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在不停止批处理执行的情况下停止cmd中当前正在运行的进程?_Windows_Batch File_Cmd - Fatal编程技术网

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的源,请注册控制台控制处理程序或C
SIGBREAK
处理程序。然后当用户关闭控制台时,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
)