只需输入"退出"关闭批处理窗口禁用关闭" X"批处理窗口右上角的按钮

时间:2017-07-05 06:34:28

标签: batch-file

我运行一个批处理文件,它会执行几个小时的任务。错误的用户碰巧通过按右上方的" X"来关闭执行批处理文件的终端窗口。关闭按钮。

我想禁用它,只想输入"退出"关闭批处理文件窗口。在窗口内..这可能吗?

1 个答案:

答案 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 CONTROLLERWindowTitle eq Administrator: WORK)以适合您的设置。但是,这对我有用。如果用户关闭输入控制台,则会在一秒钟后重新启动。用户在输入控制台中输入exit后,所有进程都将终止。