2016-04-24 154 views
2

我做了這個只是作爲一個實驗出於興趣,在一些快速閱讀在線教程和SO問題。批處理文件的IF語句不起作用?

這是我創建的批處理文件。

@ECHO OFF 

:input 
SET /P typeofc="To Connect input Y and to Disconnect input N (Y/N): " 
IF /I "%typeofc%"=="Y" goto yes 
IF /I "%typeofc%"=="N" goto no 

:yes 
rasdial whatevernetwork 

:no 
rasdial whatevernetwork /DISCONNECT 

然而,當我執行此,它運行在雙方和yesno命令,無論給出的條件。試過也在做IF <condition> <command> ELSE <command>,但後來它只是在輸入後退出,即使我在腳本的末尾添加了PAUSE

我在這做錯了什麼?

PS:我在Windows 7上執行這個32位

+2

沒有什麼可以阻止後'RASDIAL whatevernetwork'執行,因此下一行會被執行(並且被忽略,因爲它是一個標籤),那麼下一行'rasdial whatevernetwork/DISCONNECT'將被執行。要停止執行,您可以使用'goto:eof'或'exit'。你的'if ... goto'語句本身在我的電腦上執行的很好。 (用'Y'做,只用'N'做第二個' – Stephan

+1

如果你的輸入不是'Y'或'N',那麼'ras'命令都會運行。 – Stephan

+0

是的,你是絕對正確的。問題是我在執行標籤後沒有寫任何東西,添加它們就解決了問題,再加上像你說的,除了'Y'和'N'之外的任何輸入只是執行下面的所有內容,所以我添加了'IF'語句檢查'N'到一個不同的標籤,跳進去,如果'Y'的語句返回false,然後再次調用':input',如果語句返回false。另外我發現爲什麼我的ELSE不起作用原來,你必須把真正的部分命令放在括號內。感謝幫助隊友。 – RocketRuwan

回答

3

嘗試類似的東西:

@echo off 
:input 
cls 
ECHO. 
SET /P typeofc="To Connect input Y and to Disconnect input N (Y/N): " 
IF /I "%typeofc%"=="Y" goto yes 
IF /I "%typeofc%"=="N" goto no 
ECHO "%typeofc%" is not valid. Please try again. 
pause 
GOTO input 

:yes 
echo rasdial whatevernetwork 
rasdial whatevernetwork 
pause 
exit /b 

:no 
echo rasdial whatevernetwork /DISCONNECT 
rasdial whatevernetwork /DISCONNECT 
pause 
exit /b 
+2

是的。這解決了它。並幫助我更好地瞭解它是如何工作的。謝謝Hackoo。 – RocketRuwan