【问题标题】:Looping in batch files在批处理文件中循环
【发布时间】:2014-04-05 03:21:52
【问题描述】:

所以我创建了一个简单的菜单批处理文件。问题是它要等你退出程序才能再次进入。如何使我可以输入数字以转到特定程序,然后再次获得提示以转到另一个程序而不退出?

【问题讨论】:

  • 将菜单和用户输入放在一个循环中。不要忘记在菜单中放置退出程序和循环的选项。
  • 你能举个例子吗?我不熟悉 DOS 的循环
  • 你真的在使用 MS-DOS 吗?这已经超过 15 年了

标签: loops batch-file menu


【解决方案1】:

应该派上用场的模板:

@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(需要对批处理文件进行一些修改)。

【讨论】:

    【解决方案2】:

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

    %0
    

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

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

    如果您使用setlocal 语句,那么您可以将它们放在:loop 上方以停止最终的递归错误。

    @echo off
    :loop
    
    rem all your batch code inside here
    
    goto :loop
    

    【讨论】:

      【解决方案3】:

      :main 之类的东西创建你的主函数(用户输入的那个)然后在所有其他函数中你在最后输入goto main(或者你调用的任何函数),比如:

      :func1
      //stuff here
      goto main
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-21
        • 2023-03-23
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多