2016-01-07 83 views
0

我試圖製作一個簡單的批處理文件,讓我從程序列表中選擇並根據自己的選擇運行它們。作爲參考,這是我到目前爲止:cmd.exe在運行批處理文件時立即關閉

@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

我建議你在使用它們之前開始閱讀命令的幫助文件。您將立即看到您的SYNTAX錯誤。你也需要學習調試你自己的批處理文件。打開ECHO ON並從cmd提示符運行批處理文件。通過這種方式,您將在發生錯誤時看到錯誤,因爲您打開的cmd.exe會話不會終止。 – Squashman

回答

0

因爲你的if不正確。

嘗試用

if %emu% == 1 goto zsnes 

if %emu% equ 1 goto zsnes 

等。

IFFOR命令中的一些語法錯誤導致腳本存在腳本。

可能是你還

:zsnes 
start /d "C:\Users\*username*\Documents\zsnes\" zsnesw.exe 
goto :eof 

想避免其他標籤下的代碼executuion。

+0

哇,那樣做!我覺得失去一個簡單的東西,比如適當的平等檢查,我感到很愚蠢。這是我第一次嘗試使用批處理腳本來實現某些功能,所以是的。感謝你及時的答覆! – jdhthegr8

0

寫下面一行代碼結束或要停止/暫停你的cmd.exe的

timeout \t -1 

這將暫停命令屏幕,並給你一個選擇的要求,關閉它是/沒有?

+1

腳本結尾的'pause'或'timeout'不會幫助,因爲腳本沒有達到這個命令,當它崩潰之前有一個語法錯誤。最佳故障排除不是通過雙擊來啓動它,而是從cmd窗口手動執行它(最好使用'@echo on') – Stephan

0

酷似我以前一說,「如果」應該是:

if %emu% == 1 goto zsnes 

此外,添加「暫停」你又一批,這樣你就可以在出現故障時讀取錯誤的消息。

+0

'pause'或'timeout'在腳本的結尾不會幫助,因爲腳本沒有達到這個命令,當它之前崩潰時出現語法錯誤。最好的疑難解答不是通過雙擊來啓動它,而是從cmd窗口手動執行它(最好使用'@echo on') – Stephan

相關問題