我正在尝试制作一个小的批处理文件,该文件使用基于用户输入的IF语句来运行给定命令。第五个选项运行多个命令,因此为了保持整洁,我将其限制在括号内,并将其放在多行上。
但是,我似乎无法弄清楚确保用户选择该选项时仅运行该选项的正确语法。无论您选择哪种选项,它都会在选项5的括号内运行这些行。更糟糕的是,选择5以下的任何选项(因此选项6-9)会使您输入某些内容,以使其在实际执行您选择的选项之前先等待其输入。
很明显,我做错了什么,无论如何程序都会遵循该命令。对于这个令人难以置信的愚蠢问题,我深表歉意,但是我已经搜寻了互联网,并尝试了很多不同的命令和格式设置方式。如果有人能告诉我我要去哪里错了,我将永远感激,谢谢!!
@echo off
cd /d "%~p1"
title Crispy Doom Game Selector
:home
cls
echo.
echo Select Your Game:
echo =================
echo.
echo 1) Ultimate Doom
echo 2) Doom II
echo 3) TNT: Evilution
echo 4) The Plutonia Experiment
echo 5) Master Levels
echo 6) Heretic
echo 7) Chex Quest
echo 8) HacX
echo 9) Exit
echo.
set /p web=Type Number Of Game:
if "%web%"=="1" start crispy-doom.exe -iwad doom\doom.wad -savedir doom\
if "%web%"=="2" start crispy-doom.exe -iwad doom2\doom2.wad -savedir doom2\
if "%web%"=="3" start crispy-doom.exe -iwad doom2\doom2.wad -file doom2\tnt.wad -savedir doom2\
if "%web%"=="4" start crispy-doom.exe -iwad doom2\doom2.wad -file doom2\plutonia.wad -savedir doom2\
if "%web%"=="5" then do (
echo Which Level?
dir /s master\
set /p master=Type Level Name (Without .WAD Extension):
start crispy-doom.exe -iwad doom2\doom2.wad -file master\%master%.wad -savedir doom2\
)
if "%web%"=="6" start crispy-doom.exe -iwad heretic\heretic.wad -file -savedir heretic\
if "%web%"=="7" start crispy-doom.exe -iwad chex\chex.wad -savedir chex\
if "%web%"=="8" start crispy-doom.exe -iwad hacx\hacx.wad -savedir hacx\
if "%web%"=="9" exit
exit
答案 0 :(得分:0)
我设法找到了一种使用此处列出的帮助命令可以工作的解决方案。这本可以做得更好,但我至少设法通过将程序引用到包含命令的变量来使其按我想要的方式工作。但是,它仍将运行它,直到我在选项列表和选项5的变量之间放入“退出”命令为止。这样,它将在有机会运行它之前退出程序,或者将其跳过。如果选择了选项5,则运行变量。我什至还添加了取消选项,然后返回到原来的选择列表。谢谢大家的建议!
@echo off
cd /d "%~p1"
title Crispy Doom Game Selector
:MENU
cls
echo.
echo Select Your Game:
echo =================
echo.
echo 1) Ultimate Doom
echo 2) Doom II
echo 3) TNT: Evilution
echo 4) The Plutonia Experiment
echo 5) Master Levels
echo 6) Heretic
echo 7) Chex Quest
echo 8) HacX
echo 9) Exit
echo.
set /p web=Type Number Of Game:
if %web%==1 start crispy-doom.exe -iwad doom\doom.wad -savedir doom\
if %web%==2 start crispy-doom.exe -iwad doom2\doom2.wad -savedir doom2\
if %web%==3 start crispy-doom.exe -iwad doom2\doom2.wad -file doom2\tnt.wad -savedir doom2\
if %web%==4 start crispy-doom.exe -iwad doom2\doom2.wad -file doom2\plutonia.wad -savedir doom2\
if %web%==5 goto MASTER
if %web%==6 start crispy-doom.exe -iwad heretic\heretic.wad -file -savedir heretic\
if %web%==7 start crispy-doom.exe -iwad chex\chex.wad -savedir chex\
if %web%==8 start crispy-doom.exe -iwad hacx\hacx.wad -savedir hacx\
if %web%==9 exit
exit
:MASTER
echo Which Level?
dir /s master\
set /p master=Type Level Name (Without .WAD Extension), or C to cancel:
if %master%==C goto MENU
start crispy-doom.exe -iwad doom2\doom2.wad -file master\%master%.wad -savedir doom2\