在批处理文件中循环

时间:2014-04-05 03:21:52

标签: loops batch-file menu

所以我创建了一个简单的菜单批处理文件。问题是它等待您再次进入之前退出程序。如何制作它以便我可以输入一个数字来转到特定的程序,然后再次提示转到另一个程序而不退出?

3 个答案:

答案 0 :(得分:2)

应该派上用场的模板:

@ECHO OFF

:Menu
CLS

ECHO ============= MENU =============
ECHO 1. Item 1
ECHO 2. Item 2
ECHO 3. Item 3
ECHO ----------PRESS 'Q' TO QUIT----------

SET INPUT=
SET /P INPUT=Please select a number:
IF /I '%INPUT%'=='1' GOTO Item1
IF /I '%INPUT%'=='2' GOTO Item2
IF /I '%INPUT%'=='3' GOTO Item3
IF /I '%INPUT%'=='Q' GOTO Quit

CLS

ECHO ************INVALID INPUT************
ECHO Please select a number from the Main
ECHO Menu [1-3] or select 'Q' to quit.
ECHO ======PRESS ANY KEY TO CONTINUE======

PAUSE > NUL
GOTO Menu

:Item1
CMD1.EXE
GOTO Menu

:Item2
CMD2.EXE
GOTO Menu

:Item3
CMD3.EXE
GOTO Menu

:Quit
CLS
EXIT

一些评论:

  • / P开关(SET)允许您设置一个等于用户输入的输入行的变量。
  • 您可以考虑call,将标签称为子例程,而不是goto(需要对批处理文件进行一些修改)。

答案 1 :(得分:1)

退出菜单中的程序后,添加此命令

%0

只要未使用shift,它就是一个包含批处理文件名的命令,它会重新启动没有call关键字的批处理文件。

另一种选择是使用这样的循环和重新输入批处理文件开头的goto命令:

如果您使用setlocal语句,则可以将它们置于:loop之上以停止最终的递归错误。

@echo off
:loop

rem all your batch code inside here

goto :loop

答案 2 :(得分:0)

使用:main之类的函数来创建主函数(用户输入的函数)然后在所有其他函数中输入goto main(或者调用任何函数) :

:func1
//stuff here
goto main