我试图创建一个简单的批处理文件,让我从程序列表中选择并根据我的选择运行它们。作为参考,这是我到目前为止:
@echo off
:menu
echo 1. zsnes
echo 2. Project64
echo 3. MAME
echo 4. PCSX2
echo 5. VBA
echo 6. DOSBox
set /p emu=Pick your emulator [1-6]:
if %emu%=1 goto zsnes
if %emu%=2 goto project64
if %emu%=3 goto mame
if %emu%=4 goto pcsx2
if %emu%=5 goto vba
if %emu%=6 goto dosbox
:zsnes
start /d "C:\Users\*username*\Documents\zsnes\" zsnesw.exe
我刚刚通过zsnes程序输入来测试它。命令提示符启动并将要求我选择。当我选择1时,cmd.exe立即关闭但程序未运行。我创建了一个只包含起始行的脚本,它工作正常。当我手动打开cmd.exe并在其中键入该行也可以正常工作。它只是在我的脚本环境中不起作用。可能是什么导致了这个?任何建议将不胜感激!
答案 0 :(得分:0)
因为你的if不正确。
尝试
if %emu% == 1 goto zsnes
或
if %emu% equ 1 goto zsnes
等等。
IF
和FOR
命令中的一些语法错误导致脚本存在强制。
可能你也想要
:zsnes
start /d "C:\Users\*username*\Documents\zsnes\" zsnesw.exe
goto :eof
避免在其他标签下执行代码。
答案 1 :(得分:0)
在代码末尾或您要停止/暂停cmd.exe的位置写下以下行
timeout \t -1
这将暂停您的cmd屏幕,并通过询问是/否?为您提供关闭它的选项。
答案 2 :(得分:0)
正如我之前所说的那样,"如果"应该是:
if %emu% == 1 goto zsnes
此外,添加"暂停"在批处理之后,您可以在出现故障时读取错误消息。