等待按键响应:- @echo off&if not "%1"=="" call%*&exit||{Jvive@cn-dos.net|08-4-26}
- ::纯批实现等待按键响应
- :begin
- call:timeout 8 :tsk1
- :tsk1
- echo msgbox "默认计划2">%tmp%\'.vbs
- start %tmp%\'.vbs
- echo 按回车键退出
- exit
- :: /*---------------timeout----------------------
- :timeout [num] [:label]
- del/a/q %tmp%\' 2>nul||(echo 未知错误!&pause&exit)
- start/b/REALTIME %~s0 :timeout_1 %1 %2
- pause>nul
- if exist %tmp%\' exit ::没有按键,退出timeout
- title %ComSpec%&cd.>%tmp%\'&goto%2
- :timeout_1 [num] [:label]
- for /l %%a in (%1 -1 0)do (
- title 倒计时:%%a /任意键跳过.../
- if exist %tmp%\' title %ComSpec%&exit
- ping/n 2 127.1 >nul)
- title %ComSpec%&cd.>%tmp%\'&goto%2
- :: /*--------------- timeout ---------------------*/
复制代码 等待指定输入:- @echo off&if not "%1"=="" call%*&exit||{Jvive@cn-dos.net|08-4-26}
- ::纯批实现等待指定输入
- :begin
- call:timeout 5 :tsk1 626 :tsk2
- :tsk1
- echo msgbox "默认计划">%tmp%\'.vbs
- start %tmp%\'.vbs
- echo\&echo 按回车键退出
- exit
-
- :tsk2
- echo msgbox "自定义计划">%tmp%\'.vbs
- start %tmp%\'.vbs
- exit
-
- :: /*----------------- timeout --------------------
- :timeout [num] [:label1] [STR] [:LABEL2]
- setlocal&del/a/q %tmp%\' 2>nul||(echo 未知错误!&pause&exit)
- start/b/REALTIME %~s0 :timeout_1 %1 %2 %3 %4
- :timeout_2
- set "v="
- set/p v=
- if %v%.==%3. title %ComSpec%&cd.>%tmp%\'&endlocal&goto%4
- if exist %tmp%\' exit ::没有输入,退出timeout
- goto:timeout_2
- :timeout_1 [num] [:label1] [STR] [:LABEL2]
- for /l %%a in (%1 -1 0)do (
- title 倒计时:%%a /输入:%3 跳过默认计划 %2/
- if exist %tmp%\' title %ComSpec%&exit
- ping/n 2 127.1 >nul)
- title %ComSpec%&cd.>%tmp%\'&goto%2
- :: /*------------------ timeout -------------------*/
复制代码 思路:
一个进程"pause"(实际上它还是处于执行态只是执行pause命令暂停罢了),另一个进程处于执行状态,若当这个进程变为也pause时,那么,不管这个进程的优先级有多高,按键输入只会响应第一个执行pause的进程,
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=39828 |