.bat 文件的条件执行

Conditional execution on .bat files

我的 .bat 无法正确执行,如果有任何错误请报告

文件名 - games.bat

@echo off
G:

:start
cls
echo DOS Games
echo 1. DOOMS
echo 2. Prince of Persia

set /p choice=Your Choice is

pause

if %choice% == 1 goto 1
if %choice% == 2 goto 2
if %choice% == %choice% goto start

:1
cd PRINCE~1
PRINCE.EXE

exit

:2
cd DOOMS
DOOM.EXE

exit

我只想运行通过选择号码来玩游戏

我正在 运行DOSBOX 中安装 .bat,它可能与 windows bat 语法不兼容

我也可以提出任何其他建议

我厌倦了一次又一次地为许多游戏编写新的配置文件和 shell 脚本,所以我决定编写一个 .bat 代码,它可以 运行 在 DOSBOX 上加载游戏一个

choice command 可用于 dosbox,并且可能是实现您想要的唯一方法:

mount G .
G:
:start

rem --- descriptions ---

choice /c12 /s Your Choice is [1-2]: /n 
if errorlevel 2 goto two
if errorlevel 1 goto one
goto start 

:one
cd PRINCE~1
PRINCE.EXE
exit

:two
cd DOOMS
DOOM.EXE
exit

您可以使用 if errorlevel 检查所选选项,但请注意错误级别的工作方式与 equal or bigger than.. 类似,您应该先从较大的数字开始。您只能使用 IF ERRORLEVEL 检查结果,因为 %ERRORLEVEL% 变量不可访问并且您不能在 dosbox 下使用三字母比较运算符。

我注意到的另一件事是没有设备映射。要在 dosbox 下访问您的文件,您需要 mount a certain directory as a drive first。这里我挂载了 G: 作为当前目录。(或者它可能挂载在 conf 文件中?)

我的一些调整:

@echo off

:start
G:

cls

echo  .:::::         .::::        .:: ::
echo  .::   .::    .::    .::   .::    .::
echo  .::    .:: .::        .::  .::
echo  .::    .:: .::        .::    .::
echo  .::    .:: .::        .::       .::
echo  .::   .::    .::     .::  .::    .::
echo  .:::::         .::::        .:: ::
echo.
echo.
echo     .::::          .:        .::       .:: .::::::::   .:: ::
echo   .:    .::       .: ::      .: .::   .::: .::       .::    .::
echo  .::             .:  .::     .:: .:: . .:: .::        .::
echo  .::            .::   .::    .::  .::  .:: .::::::      .::
echo  .::   .::::   .:::::: .::   .::   .:  .:: .::             .::
echo   .::    .:   .::       .::  .::       .:: .::       .::    .::
echo    .:::::    .::         .:: .::       .:: .::::::::   .:: ::
echo.
echo.

pause

cls

echo List of Games :
echo.
echo 1. Prince of Persia
echo 2. DOOMS
echo.

echo Select the Game [1-2]
choice /c12 /s "::" /n

cls

if errorlevel 2 goto two
if errorlevel 1 goto one

:one
cd PRINCE~1
PRINCE.EXE

:two
cd DOOMS
DOOM.EXE

rem --- without cd.. we cannot switch games bcz each time we enter the game folder ---
cd ..

goto start