我运行一个批处理文件,它会执行几个小时的任务。错误的用户碰巧通过按右上方的" X"来关闭执行批处理文件的终端窗口。关闭按钮。
我想禁用它,只想输入"退出"关闭批处理文件窗口。在窗口内..这可能吗?
答案 0 :(得分:-1)
仅使用一个批处理文件无法完成此操作。但对此可能有一种非常肮脏的方式。您将需要三个批处理文件:
编辑:这是解决方案。将这三个文件放在同一个文件夹中。controller.bat:
@ECHO OFF
TITLE CONTROLLER
IF NOT EXIST hiddenrunner.vbs (
echo CreateObject^("WScript.Shell"^).Run Wscript.Arguments^(0^), 0, False>hiddenrunner.vbs
)
tasklist /V|findstr "MONITOR"
IF %ERRORLEVEL%==1 hiddenrunner.vbs monitor.bat
:INPUTLOOP
CLS
SET /P input=Type 'exit' to exit:
IF /i NOT %input%==exit GOTO INPUTLOOP
ECHO ok, exiting
taskkill /F /FI "WindowTitle eq Administrator: WORK" /T
taskkill /F /FI "WindowTitle eq Administrator: MONITOR" /T
ping localhost -n 2
del /Q hiddenrunner.vbs
monitor.bat:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
TITLE MONITOR
hiddenrunner.vbs work.bat
:LOOP
tasklist /V|findstr "CONTROLLER"
IF !errorlevel!==1 START controller.bat
ping localhost -n 2
GOTO LOOP
work.bat:
@ECHO OFF
title WORK
ping -t localhost
在您的情况下,工作文件将是您要执行的原始批次。您必须调整窗口标题(例如TITLE CONTROLLER
和WindowTitle eq Administrator: WORK
)以适合您的设置。但是,这对我有用。如果用户关闭输入控制台,则会在一秒钟后重新启动。用户在输入控制台中输入exit
后,所有进程都将终止。