首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在批处理文件中正确限制IF命令?

如何在批处理文件中正确限制IF命令?
EN

Stack Overflow用户
提问于 2019-01-20 07:55:51
回答 1查看 54关注 0票数 2

我正在尝试创建一个小的批处理文件,它使用基于用户输入的IF语句运行给定的命令。第5个选项运行多个命令,因此为了保持简洁,我将其限制在括号内,并将其放在多行中。

然而,我似乎找不出正确的语法来确保它只在用户选择时运行该选项。无论您选择哪个选项,它都会运行选项5括号内的行。更糟糕的是,选择5后面的任何选项(所以选项6-9)会让你输入一些东西来满足它正在等待的输入,然后实际执行你最初选择的选项。

很明显,我做错了什么,无论发生什么,程序都会遵循该命令。我为这个令人难以置信的下流问题道歉,但我已经搜索了互联网,并尝试了一系列不同的命令和格式化方法。如果有人能告诉我哪里出错了,我将永远感激不尽,提前谢谢你!

代码语言:javascript
复制
@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
EN

回答 1

Stack Overflow用户

发布于 2019-01-20 20:31:49

我设法找出了一个使用这里列出的帮助命令工作的解决方案。这可能可以做得更好,但我至少设法让它以我想要的方式工作,而不是将程序引用到包含命令的变量。然而,它仍然会运行它,直到我在选项列表和选项5的变量之间放了一个' exit‘命令。这样,它就会在有机会运行它之前退出程序,或者如果选择了选项5,它将跳过它来运行变量。我甚至添加了取消并返回到原始选项列表的选项。谢谢大家的建议!

代码语言:javascript
复制
@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\
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54272396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档