[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理怎么实现按任意键退出,倒计时执行后面的代码?

怎么可以实现按任意键退出,倒计时执行后面的代码?坛子里的代码SET/P会影响后面的执行。
不用第三方命令。
1、有倒计时
2、在倒计时过程中可以按任意键退出
3、倒计时结束自动执行后面的代码
4、执行后面的代码时不再受按任意键退出的影响[]

[ 本帖最后由 asdfghasdfgh 于 2011-1-29 21:50 编辑 ]
1

评分人数

    • hanyeguxing: 感谢给帖子标题标注[已解决]字样PB + 2

此代码用的SET/P,如果倒计时不是退出而是执行后面的代码,会出问题!
asdfghasdfgh 发表于 2011-1-25 17:09

请问楼主,如果倒计时不是退出而是执行后面的代码,会出什么问题!
  1. @echo off
  2. if not "%1"=="" goto %1
  3. del "%temp%\#" 2>nul
  4. start /b %~fs0 :aa
  5. :agn
  6. set/p=按任意键退出...<nul&pause>nul
  7. >"%temp%\#" type nul
  8. exit
  9. :aa
  10. for /l %%a in (10 -1 1) do (
  11.    title 倒计时 %%a 秒后自动退出...
  12.    if exist "%temp%\#" (
  13.       del "%temp%\#"
  14.       exit
  15.    )
  16.    ping -n 2 127.1>nul
  17. )
  18. title Windows2000
  19. color 1f
  20. mode con lines=10
  21. set work=0
  22. set n=0
  23. set mo=0
  24. set number=0
  25. set all=60
  26. set time=%all%
  27. :show
  28. :check
  29. if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check
  30. :2
  31. cls
  32. echo  进度: %n% / %all%                                          剩余时间:%time%秒
  33. echo.
  34. echo.
  35. echo                                  完成 %work% %%%
  36. echo.
  37. if not "%num%"=="" echo       %num%
  38. if not "%num%"=="" echo       %num%
  39. if %work%==100 goto end
  40. ping 127.1 -n 1 >nul
  41. set /a n=%n%+1
  42. set /a time=%all%-%n%
  43. set /a work=(%n%)*100/(%all%)
  44. set /a number=%work%/3
  45. set /a number=%number%+1
  46. goto show
  47. endlocal
  48. :end
  49. title 正在退出...
  50. taskkill /im cmd.exe /fi "windowtitle eq 正在退出..."
复制代码

TOP

那段代码的关键不在退格符或者for什么的,而在于start /b,借此实现单窗口双进程,并用临时文件互通有无,这构思的确精彩绝伦

TOP

pause 这个用的很好!!!

TOP

呵呵
厉害
大概看懂了
牛b

TOP

原帖由 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"这个文件怎么会一按下键盘就消失的

TOP

自己对代码的不熟悉,其实在大家的帮助下问题早就解决,谢谢各位!

TOP

学习一下,顶一下,增加人气。

TOP

版主的退格符用的真是巧秒啊,学习了

TOP

回复 7楼 的帖子

  1. @echo off
  2. if "%~1"=="按任意键退出" goto :%1
  3. >"%temp%\.sub" cd.
  4. start "" /b %0 按任意键退出
  5. set 退格键=
  6. for /l %%a in (10 -1 1) do (
  7.     set /p =%退格键%%%a 秒后开始备份文件... [按任意键退出] <nul
  8.     if not exist "%temp%\.sub" exit
  9.     ping -n 2 127.1 >nul
  10. )
  11. echo,
  12. echo 备份完成。
  13. del "%temp%\.sub"
  14. title 正在退出...
  15. taskkill /im cmd.exe /fi "windowtitle eq 正在退出..."
  16. :按任意键退出
  17. pause >nul
  18. del "%temp%\.sub"
  19. exit
复制代码

[ 本帖最后由 tmplinshi 于 2011-1-26 20:29 编辑 ]
2

评分人数

TOP

回复 9楼 的帖子

那就在顶楼重新表述一下吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

自己顶一下 求解!!

TOP

原帖由 Batcher 于 2011-1-26 12:53 发表
顶楼不是说要实现按任意键退出吗,怎么现在又变了?


没有变,我再叙述一遍:
1、有倒计时
2、在倒计时过程中可以按任意键退出
3、倒计时结束自动执行后面的代码
4、执行后面的代码时不再受按任意键退出的影响

谢谢,可能是之前没表诉清楚。

TOP

回复 7楼 的帖子

顶楼不是说要实现按任意键退出吗,怎么现在又变了?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 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 =%退格 ...


这个代码执行完了必须要按一下任意键才能退出,可否直接就退出呢?

TOP

返回列表