.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
我的 .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