Board logo

标题: [特效代码] [已解决]批处理在循环中,如果按任意键退出 [打印本页]

作者: 522235677    时间: 2013-6-29 00:26     标题: [已解决]批处理在循环中,如果按任意键退出

本帖最后由 522235677 于 2013-7-10 23:43 编辑

比如这样
  1. :1
  2. echo 13
  3. goto 1
复制代码
打开后就会一直循环显示13,如果在循环的时候按下任意键或者指定按键就能退出,或者跳转到其它标签
作者: Python    时间: 2013-6-30 18:32

Ctrl +C 终止掉,这个算吗?
作者: 522235677    时间: 2013-6-30 19:39

回复 2# Python


    这个还不如直接猛击一下叉号

主要是让他退出循环,而不是退出批处理。
作者: cutebe    时间: 2013-6-30 20:12

  1. @ECHO OFF
  2. CD/D %~DP0
  3. CHCP 437>NUL&GRAFTABL 936>NUL
  4. :1
  5. echo 13
  6. CK 检查是否有按键
  7. IF %ERRORLEVEL% NEQ 0 GOTO :NEXT 跳出循环
  8. goto 1
  9. :NEXT
  10. ECHO,循环结束!
  11. PAUSE
复制代码
CK.EXE
作者: CrLf    时间: 2013-6-30 22:37

我是这么做的:
  1. @echo off
  2. %1 goto :main
  3. for /f %%a in ('ppids /1') do taskkill /f /pid %%a
  4. exit
  5. :main
  6. start /b "" %0 ::
  7. for /l %%a in (1 1 1000000) do (
  8. echo 第 %%a 次循环
  9. )
  10. pause
复制代码
需要PPIDs
作者: CrLf    时间: 2013-6-30 22:59

也可以这样:
  1. @echo off
  2. CHCP 437|GRAFTABL 936>NUL
  3. echo e100 b4 b cd 21 b4 4c cd 21^&echo rcx^&echo 8^&echo w^&echo q|debug ck.com
  4. for /l %%a in (1 1 10000) do (
  5.    echo 第 %%a 次循环
  6.    ck||goto input
  7. )
  8. pause&exit
  9. :input
  10. set /p str=有输入:
  11. pause
复制代码

作者: terse    时间: 2013-7-1 00:00

本帖最后由 terse 于 2013-7-1 00:03 编辑

修改当年 s11ss 的思路
  1. @echo off
  2. %1start /b "" %~s0 :&pause>nul&cd.>$.t&start /b del $.t ^&exit&goto end
  3. del $.t 2>nul
  4. :loop
  5. if exist $.t exit
  6. echo 13
  7. goto loop
  8. :end
  9. echo 到这里?
  10. pause
复制代码

作者: cjiabing    时间: 2013-7-10 09:26

  1. @echo off
  2. del ~#>nul 2>nul
  3. start /b "" cmd /k "pause&cd.>~#&exit/b"
  4. set n=0
  5. :1
  6. if exist ~# goto 2
  7. set /a n+=1
  8. echo %n%
  9. goto 1
  10. :2
  11. echo OVER
  12. pause
  13. del ~#>nul 2>nul
复制代码

作者: cjiabing    时间: 2013-7-10 09:41

试了个新方法,不过严重影响主进程效率~
  1. @echo off
  2. title try
  3. start /b "" cmd /c "pause&title Pause&exit/b"
  4. set n=0
  5. :1
  6. set /a n+=1
  7. echo %n%
  8. for /f %%a in ('tasklist /fi  "WINDOWTITLE eq Pause" /nh') do if not "%%a"=="" goto 2
  9. goto 1
  10. :2
  11. echo OVER
  12. pause
复制代码

作者: 522235677    时间: 2013-7-10 23:43

回复 9# cjiabing


    谢了,看样只能这样了。只能靠另一个窗口来控制。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2