标题: [其他] [已解决]批处理怎么实现按任意键退出,倒计时执行后面的代码? [打印本页]
作者: asdfghasdfgh 时间: 2011-1-25 16:33 标题: [已解决]批处理怎么实现按任意键退出,倒计时执行后面的代码?
怎么可以实现按任意键退出,倒计时执行后面的代码?坛子里的代码SET/P会影响后面的执行。
不用第三方命令。
1、有倒计时
2、在倒计时过程中可以按任意键退出
3、倒计时结束自动执行后面的代码
4、执行后面的代码时不再受按任意键退出的影响[]
[ 本帖最后由 asdfghasdfgh 于 2011-1-29 21:50 编辑 ]
作者: zcydez 时间: 2011-1-25 16:53
如果不用第三方……很难做到
至少我做不到
作者: liion631818 时间: 2011-1-25 17:06
给你一段本论坛的代码:- @echo off
- if not "%1"=="" goto %1
- del "%temp%\#" 2>nul
- start /b %~fs0 :aa
- :agn
- set/p=按任意键退出...<nul&pause>nul
- >"%temp%\#" type nul
- exit
- :aa
- for /l %%a in (10 -1 1) do (
- title 倒计时 %%a 秒后自动退出...
- if exist "%temp%\#" (
- del "%temp%\#"
- exit
- )
- ping -n 2 127.1>nul
- )
- title 自动退出...
- for /f "tokens=2" %%a in ('tasklist /fi "windowtitle eq 自动退出..." /nh') do (
- taskkill /f /pid %%a >nul
- )
- exit
复制代码
原帖http://www.bathome.net/redirect. ... amp;goto=nextnewset
作者: asdfghasdfgh 时间: 2011-1-25 17:09
原帖由 liion631818 于 2011-1-25 17:06 发表
给你一段本论坛的代码:@echo off
if not "%1"=="" goto %1
del "%temp%\#" 2>nul
start /b %~fs0 :aa
:agn
set/p=按任意键退出...nul
>"%temp%\#" type nul
exit
:aa
for /l %%a in (10 -1 1) do (
ti ...
此代码用的SET/P,如果倒计时不是退出而是执行后面的代码,会出问题!
作者: tmplinshi 时间: 2011-1-26 01:34
- @echo off
- if "%~1"=="按任意键退出" goto :%1
-
- >"%temp%\.sub" cd.
- start "" /b %0 按任意键退出
- set 退格键=
-
- for /l %%a in (10 -1 1) do (
- set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
- if not exist "%temp%\.sub" exit
- ping -n 2 127.1 >nul
- )
-
- echo,
- echo 备份完成。
-
- echo 按任意键退出...
- exit
-
- :按任意键退出
- pause >nul
- del "%temp%\.sub"
- exit
复制代码
[ 本帖最后由 tmplinshi 于 2011-1-26 21:03 编辑 ]
作者: liion631818 时间: 2011-1-26 10:10
原帖由 tmplinshi 于 2011-1-26 01:34 发表
@echo off
if "%~1"=="按任意键退出" goto :%1
>"%temp%\.sub" cd.
start "" /b %0 按任意键退出
set 退格键=
for /l %%a in (10 -1 1) do (
set /p =%退格 ...
厉害,这段代码确实好用,以前都没想到,学习了~~
作者: asdfghasdfgh 时间: 2011-1-26 12:35
原帖由 tmplinshi 于 2011-1-26 01:34 发表
@echo off
if "%~1"=="按任意键退出" goto :%1
>"%temp%\.sub" cd.
start "" /b %0 按任意键退出
set 退格键=
for /l %%a in (10 -1 1) do (
set /p =%退格 ...
这个代码执行完了必须要按一下任意键才能退出,可否直接就退出呢?
作者: Batcher 时间: 2011-1-26 12:53 标题: 回复 7楼 的帖子
顶楼不是说要实现按任意键退出吗,怎么现在又变了?
作者: asdfghasdfgh 时间: 2011-1-26 13:18
原帖由 Batcher 于 2011-1-26 12:53 发表
顶楼不是说要实现按任意键退出吗,怎么现在又变了?
没有变,我再叙述一遍:
1、有倒计时
2、在倒计时过程中可以按任意键退出
3、倒计时结束自动执行后面的代码
4、执行后面的代码时不再受按任意键退出的影响
谢谢,可能是之前没表诉清楚。
作者: asdfghasdfgh 时间: 2011-1-26 19:50
自己顶一下 求解!!
作者: Batcher 时间: 2011-1-26 19:58 标题: 回复 9楼 的帖子
那就在顶楼重新表述一下吧
作者: tmplinshi 时间: 2011-1-26 20:14 标题: 回复 7楼 的帖子
- @echo off
- if "%~1"=="按任意键退出" goto :%1
-
- >"%temp%\.sub" cd.
- start "" /b %0 按任意键退出
- set 退格键=
-
- for /l %%a in (10 -1 1) do (
- set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
- if not exist "%temp%\.sub" exit
- ping -n 2 127.1 >nul
- )
-
- echo,
- echo 备份完成。
-
- del "%temp%\.sub"
- title 正在退出...
- taskkill /im cmd.exe /fi "windowtitle eq 正在退出..."
-
- :按任意键退出
- pause >nul
- del "%temp%\.sub"
- exit
复制代码
[ 本帖最后由 tmplinshi 于 2011-1-26 20:29 编辑 ]
作者: wc726842270 时间: 2011-1-27 03:04
版主的退格符用的真是巧秒啊,学习了
作者: acaigg 时间: 2011-1-28 13:36
学习一下,顶一下,增加人气。
作者: asdfghasdfgh 时间: 2011-1-29 21:52
自己对代码的不熟悉,其实在大家的帮助下问题早就解决,谢谢各位!
作者: WecanHuang 时间: 2011-2-22 23:20
原帖由 tmplinshi 于 2011-1-26 20:14 发表
@echo off
if "%~1"=="按任意键退出" goto :%1
>"%temp%\.sub" cd.
start "" /b %0 按任意键退出
set 退格键=
for /l %%a in (10 -1 1) do (
set /p =%退格 ...
太高深了
有人能给我讲下这段吗?
for /l %%a in (10 -1 1) do (
set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
if not exist "%temp%\.sub" exit
ping -n 2 127.1 >nul
)
我一直没弄明白"%temp%\.sub"这个文件怎么会一按下键盘就消失的
作者: WecanHuang 时间: 2011-2-22 23:55
呵呵
厉害
大概看懂了
牛b
作者: acaigg 时间: 2011-4-6 16:01
pause 这个用的很好!!!
作者: CrLf 时间: 2011-4-6 16:41
那段代码的关键不在退格符或者for什么的,而在于start /b,借此实现单窗口双进程,并用临时文件互通有无,这构思的确精彩绝伦
作者: acaigg 时间: 2011-4-6 20:00
此代码用的SET/P,如果倒计时不是退出而是执行后面的代码,会出问题!
asdfghasdfgh 发表于 2011-1-25 17:09
请问楼主,如果倒计时不是退出而是执行后面的代码,会出什么问题!- @echo off
- if not "%1"=="" goto %1
- del "%temp%\#" 2>nul
- start /b %~fs0 :aa
- :agn
- set/p=按任意键退出...<nul&pause>nul
- >"%temp%\#" type nul
- exit
- :aa
- for /l %%a in (10 -1 1) do (
- title 倒计时 %%a 秒后自动退出...
- if exist "%temp%\#" (
- del "%temp%\#"
- exit
- )
- ping -n 2 127.1>nul
- )
- title Windows2000
- color 1f
- mode con lines=10
- set work=0
- set n=0
- set mo=0
- set number=0
- set all=60
- set time=%all%
- :show
-
- :check
- if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check
-
- :2
-
- cls
- echo 进度: %n% / %all% 剩余时间:%time%秒
- echo.
- echo.
- echo 完成 %work% %%%
- echo.
- if not "%num%"=="" echo %num%
- if not "%num%"=="" echo %num%
-
- if %work%==100 goto end
-
- ping 127.1 -n 1 >nul
- set /a n=%n%+1
- set /a time=%all%-%n%
- set /a work=(%n%)*100/(%all%)
- set /a number=%work%/3
- set /a number=%number%+1
- goto show
- endlocal
-
- :end
- title 正在退出...
-
- taskkill /im cmd.exe /fi "windowtitle eq 正在退出..."
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |