批量,如果没有按键继续(使用按键停止循环)

时间:2014-07-12 00:26:24

标签: batch-file keypress

我写了一个简单的脚本。它通过编译器运行,并且具有编译器特有的内置命令,因此除非您下载编译器或原始文件,否则无法运行它。你应该能够弄清楚我在说什么。

@echo off
set x=1
:loop
rem wait 5
cls
set /a x=%x% + 1
if %x%==20 goto loop2
rem shadeboxat 25 %x% 1 1 4
goto loop
:loop2
rem wait 5
cls
set  /a x=%x% - 1
if %x%==0 goto loop
rem shadeboxat 25 %x% 1 1 4
goto loop2

继承了高级命令:

rem wait 5:所有这一切都是等待5毫秒。

rem shadeboxat 25 %x% 1 1 4:这会在坐标25和%x%处创建一个框。最后的1 1 4只是关于我正在创建什么类型的盒子的额外信息。

我需要某种方法来添加“跳转到标签,如果有任何按键”。不幸的是,我不认为这是可能的。

我尝试使用choice命令,在那里我列出除了一个之外的每个常规键,并且一个键被设置为默认值,计时器为1.不幸的是1秒太多了,无法等待。

我真的怀疑这是可能的,但如果有人能证明我错了,我会很高兴听到它。

2 个答案:

答案 0 :(得分:2)

你可以在Batch中执行此操作,但它有点狡猾。

Main.bat

@echo off
set x=1
start /b KeyPress.Bat
wait 5
set /p end=< %temp%\keypress.tmp

:loop
wait 5
cls
set /a x+=1
set /p end=< %temp%\keypress.tmp
if "%end%"=="1" goto end
if %x%==20 goto loop2
shadeboxat 25 %x% 1 1 4
set /p end=< %temp%\keypress.tmp
if "%end%"=="1" goto end
goto loop


:loop2
wait 5
cls
set  /a x-=1
set /p end=< %temp%\keypress.tmp
if "%end%"=="1" goto end
if %x%==0 goto loop
shadeboxat 25 %x% 1 1 4
set /p end=< %temp%\keypress.tmp
if "%end%"=="1" goto end
goto loop2

:end
REM Program End Code

KeyPress.bat

@echo off
echo 0 > %temp%\keypress.tmp
choice /c 1234567890qwertyuiopasdfghjklzxcvbnm /cs /n /M "Key Press To Cancel"
echo 1 > %temp%\keypress.tmp
Exit

这样,如果按下键盘上的任何字母或数字,程序将在循环之前退出并更改循环。除非你的shadeboxat需要一段时间才能执行,否则这应该是即时的。

除此之外,这应该做你想要的。 Haven还没有测试它。

答案 1 :(得分:0)

在32位Windows中,您可以使用一个小的.com文件来检测按下的大写锁或控件等键,并在错误级别上进行分支。