使用批处理文件菜单选择要运行的其他批处理

时间:2016-01-10 15:38:55

标签: windows batch-file cmd

我跟着this neat tutorial并尝试编辑它以供我使用。

我遇到了一个小问题,创建了一个带有一个小菜单的小批处理文件,在选择了一个选项(例如RUN ARMA3DB)后,它会在批处理中调用:ARMA3DB脚本,这将启动运行文件的所需批处理文件称为A3DB-V2.bat(位于其他地方)。

ECHO OFF
CLS

:MENU
cls
ECHO.
ECHO ...............................................
ECHO.
ECHO  1 - RUN - ArmA 3 Server
ECHO  2 - RUN - ArmA 3 Database
ECHO  3 - RUN - Minecraft Server
ECHO  4 - RUN - Killing Floor Server
ECHO  5 - RUN - Insurgency Server
ECHO  6 - RUN - Starbound Server
ECHO  7 - EXIT
ECHO.

SET /P M=Type 1, 2, 3, 4, 5, 6, or 7 then press ENTER:

IF %M%==1 GOTO ARMA3SERVER
IF %M%==2 GOTO ARMA3DB
IF %M%==3 GOTO MINECRAFT
IF %M%==4 GOTO KILLINGFLOOR2 
IF %M%==5 GOTO INSURGENCY
IF %M%==6 GOTO STARBOUND
IF %M%==7 GOTO EOF

:ARMA3SERVER
cd "C:\Program Files (x86)\Steam\steamapps\common\Arma 3\"
start A3-V2.bat
GOTO MENU

:ARMA3DB
cd "C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB\"
start A3DB-V2.bat
GOTO MENU

:MINECRAFT
cd "C:\Users\USERNAME\AppData\Local\McMyAdmin\"
start McMyAdmin-V2.bat
GOTO MENU

:KILLINGFLOOR2
cd "C:\Program Files\Steam\steamapps\common\killingfloor2\"
start KF2ServerReunion-V2.bat
GOTO MENU

:INSURGENCY
cd "C:\Program Files (x86)\Steam\steamapps\common\Insurgency Dedicated Server\"
start Insurgency-V2.bat
GOTO MENU

:STARBOUND
cd "C:\Program Files (x86)\Steam\steamapps\common\Starbound\win64\"
start starbound_server-v2.bat
GOTO MENU

这是在A3DB-V2.bat:

START /min redis-server.exe redis.conf

问题是我打电话给选项" 2"对于ARMA3DB,所需的批处理文件(A3DB-V2.bat)打开程序的本机控制台" redist-server.exe"但它也会打开一个全新的cmd标签:

C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB\START /min redist-server.exe redist.conf
C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB> 

我尝试通过在菜单批处理脚本中的START命令之后添加/ B(不打开新的cmd选项卡)来解决它:

:ARMA3DB
cd "C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB\"
start /B A3DB-V2.cmd
GOTO MENU

但是出现了一个新问题,现在它显示的内容与菜单所在的选项卡相同。所以:

Type 1, 2, 3, 4, 5, 6, or 7 then press ENTER:
C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB\START /min redist-server.exe redist.conf
C:\Program Files (x86)\Steam\steamapps\common\Arma 3\DB> 

所以我无法输入任何其他值,它似乎忽略了GOTO MENU,而是继续作为cmd.exe的新实例在它启动新批处理文件的文件夹中。

有没有人想知道一个简单的解决方案,所以我可以打开menu.bat文件,选择一个选项,按回车键,可以运行所需的批处理文件(最小化),我可以立即选择之后来自同一菜单文件的另一个选项?

//当然,剧本并不完全完整,我遇到了这个问题。

感谢所有最终的回复。

1 个答案:

答案 0 :(得分:0)

使用<meta property="og:site_name" content="Microsoft"> <meta property="og:title" content="ASP.NET | Open-source web framework for .NET"> <meta name="twitter:image" content="https://dotnet.microsoft.com/images/redesign/social/large.png"> <meta property="og:description" content="ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript." /> 命令调用其他批处理文件。例如,更改此代码:

CALL

对此:

:ARMA3SERVER
cd "C:\Program Files (x86)\Steam\steamapps\common\Arma 3\"
start A3-V2.bat
GOTO MENU

然后将:ARMA3SERVER cd "C:\Program Files (x86)\Steam\steamapps\common\Arma 3\" call A3-V2.bat GOTO MENU 添加到每个被调用的批处理文件中,如下所示:@,以便在@START /min redis-server.exe redis.conf设置为关闭的情况下运行。