2014-01-10 89 views
2

對大家稍微晚一點的新年快樂,希望你有一個好的。使用If語句和鍵盤輸入的批處理文件

我想創建一個批處理文件,將採取鍵盤輸入,然後啓動基於該輸入的程序或顯示錯誤消息如果輸入的選項無效。但它不起作用。這是我到目前爲止:

ECHO OFF 
set /p %environment%=Connect to Live or Dev?: 

IF %environment% = "Live" 
(
C:\Windows\System32\runas.exe /user:live\someuser /netonly "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" 
) 
ELSE IF %environment% = "Dev" 
(
C:\Windows\System32\runas.exe /user:dev\someuser /netonly "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" 
) 
ELSE 
(
ECHO "Invalid Option" 
) 

我試過它有和沒有%輪變量,但它沒有奏效。任何人都可以將我指向正確的方向嗎?

希望你能幫上忙。

乾杯

亞歷

+0

刪除'@echo off'看個究竟了.cmd文件測試這一點。 2)'('必須和'if'在同一行上)3)'else else('必須在同一行上 – Stephan

回答

5

下面是一些代碼,可以幫助您找到正確的方向。 1)看,怎麼你的`if`在線翻譯:我在Windows 7

ECHO OFF 
SET /p environment="Connect to Live or Dev?" 
IF /i "%environment%" == "Live" GOTO live 
IF /i "%environment%" == "Dev" GOTO dev 
ECHO Invalid Option 
GOTO end 
:live 
ECHO "Live!!!!" 
goto end 
:dev 
ECHO "Dev!!!" 
:end 
PAUSE 
+0

非常棒!非常棒!謝謝你的幫助。 – denimknight

2
ECHO OFF 
set /p "environment=Connect to Live or Dev?:" 

IF "%environment%"=="Live" (
    .... 
) ELSE IF "%environment%"=="Dev" (
    .... 
) ELSE (
    .... 
) 

1 - 在set命令,在等號的左邊的變量不使用%標誌的名稱。 %var% sintax用於檢索變量的值。

2 - 以測試相等的操作者是==EQU(見if /?

3 - 在IF命令,相同的引用應該被施加到相等運算的兩側。如果不是,則不會將值視爲等於

4 - 當IF命令條件爲真時要執行的命令/塊必須在與IF相同的行中開始,因此起始括號不能位於下一行

5 - ELSE必須繼續IF塊,並在其自己的塊的開始之前。 IF的右括號和ELSE的開頭括號必須在同一行。