2016-01-13 73 views
0

我想创建一个批处理文件,该文件检测CMD窗口何时关闭并直接执行操作。批处理文件在关闭后执行动作

例如,如果在文本文件的text.txt被打开,之后我启动名为prog.bat的批处理文件代码里:

@echo off 

echo Hello 

pause 

我怎么能告诉批次,如果CMD窗口这是当前opend,应该有人关闭CMD窗口时taskill text.txt文件?(通过关闭结束进程或击中顶部的X)

+3

可能重复的:http://stackoverflow.com/questions/11657622/detect-or-intercept-moment-when-a-batch-is- closed-via-mouse-x-console-button – Leptonator

+0

您必须有另一个程序监视该cmd.exe实例,并在关闭该窗口时让它执行您想要的操作。 – Squashman

+0

一个马虎的可能性会让一个masin批处理启动你希望用'/ wait'参数监视批处理。但随后会打开两个窗口.. – Bloodied

回答

0

我不是最好的之一,但你可以做到这一点。

您需要创建3个文件。

的start.bat

@echo off 
TITLE Start.bat 
REM :: THIS FILE OPEN'S THE CHECK WINDOW BATCH :: 

start Init2.bat 
ping localhost -n 1 >nul 
REM :: IF I WOULDN'T HAVE THE "PING" THE CHECK WINDOW BATCH WOULD BE ON TOP :: 

start Init1.bat 

Init1.bat

@echo off 
REM :: YOU CAN WRITE WHAT YOU WANT HERE :: 
REM :: YOUST REMEMBER TO CHANGE "Init2.bat" WHEN YOU CHANGE THE TITLE :: 

TITLE Init1.bat 
echo.HELLO 
pause>nul 

Init2.bat

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
TITLE Init2.bat 
:Start 
REM :: GET PID :: 

set "PID=" 
for /F "skip=3 delims=" %%A in ('TASKLIST /FI "WINDOWTITLE eq Init1.bat"') do (
    set "A=%%A" 
    set "A=!A:~26,8!" 
    set "A=!A: =!" 
    set "PID=!A!" 
    set "A=" 
    echo.!PID! 
    goto Test 
) 
REM :: IF NO WINDOWS NAMED "Init1.bat" exit :: 
if not defined "PID" (
    echo.No Window! 
    goto Exit 
) 
:Test 
set "true=0" 
for /F "skip=3 delims=" %%A in ('TASKLIST /FI "PID eq !PID!"') do (
    set "true=1" 
) 
REM :: IF WINDOW CLOSED :: 
if "!true!" EQU "0" (
    echo.No Window! 
    goto Exit 
) 
goto Test 
:Exit 
REM :: HERE ARE YOU WRITING THE CLOSING FILE :: 

ren testtxt.txt prog.bat 
[email protected] off > prog.bat 
echo.echo hello >> prog.bat 
echo.pause >> prog.bat 
exit 

希望这有助于。

这不是维基的答案,但我希望你觉得它有帮助。

唯一的是你有一个窗口后面的第一个,但它的作品。

1

这是在this question接受的答案:

@echo off 
if "%1" equ "Restarted" goto %1 
start "" /WAIT /B "%~F0" Restarted 
echo Execute here anything you want when the Batch file is closed... 
goto :EOF 

:Restarted 

echo Hello 
pause 
exit 
相关问题