2015-10-20 81 views
0

我一直在寫一些批處理文件,現在一天。我是初學者!所以我做了一個自定義批處理,通過輸入設置名稱啓動它,但是。我在創建這個自定義文件時遇到了一些問題。如果條件不相同批處理文件崩潰

@echo off 
set /p lnk="Setup Name = " 
if "%lnk%"=="install.itunes.x64.windows" goto itunes 
:itunes 
start=(path)(setup.exe)..... 
cls 

但是,如果用戶輸入「itues或‘installitunes’或‘KJEWBFciou’任何不配襯我的自定義命令,我想在這種情況下一個錯誤彈出。 我可以做什麼? 和不問把"if not "%lnk%"我已經嘗試扶平:0 因爲我有很多設定iTunes一樣,如果投入將不等於自定義命令它啓動下一個安裝 請幫我

請igonre我的錯誤,我只有在這裏不是批處理文件。 in line 2%lnk%,lnk and line 3「%lnk 「」 %LNK%」

+1

來自SET/P命令刪除百分比符號。 – Squashman

+2

''%lnk%''也應該是''%lnk%''' – SomethingDark

+0

'if'命令後,你無意中掉進了':itunes'節,所以你需要一個'goto:EOF'或'goto': 'if'後的somewhere_else' ... – aschipfl

回答

0

好了,所以..

1 @echo off 
2 set /p %lnk%="Setup Name = " 
3 if "%lnk%=="install.itunes.x64.windows" goto itunes 
4 :itunes 
5 start=(path)(setup.exe)..... 
6 cls 

一些錯誤,但你靠近。

在第2行,你用:

set /p %lnk%=="Setup Name = " goto itunes 

當設置你不能使用%%它周圍的變量,但比較多數民衆贊成時僅使用,因爲在創建變量時,計算機將取代[ set/p%lnk%=]與[set/p =],這是無效的語法。

在第3行:

if "%lnk%=="install.itunes.x64.windows" goto itunes 

你永遠不會關閉在 '==' 比較左側的報價。請注意,您還可以使用[if%val1%equ%val2%]獲得相同的結果,這對您使用其他比較標籤時可以提供幫助。

雖然[goto itunes]可以正常工作,但它是使用[goto:itunes]的好習慣,如果您想將所有代碼放在一起,您可以創建一個腳註代碼塊,如:

if %val1% equ %val2% (
rem do stuff here 
) 

做筆記,如果你要麼需要一個任務,如果變量匹配運行,如果不嘗試下一場比賽,你可以使用這些多。否則,你可以使用:

if %val1% equ %val2% (
    rem do stuff here 
) else (
    rem do other stuff here 
) 

在回答您的問題就可以推出下一個命令,那是因爲在第3行,你檢查變量的字符串相匹配,但如果它不批跳過它,下次運行行,這是你的:itunes標籤。總之,在修復[start =(path)(setup.exe).....]按需啓動後,這應該會更好。

@echo off && color f0 && title Itunes 

:top 
cls 
set /p lnk="Setup Name = " 

if "%lnk%"=="install.itunes.x64.windows" (
    start=(path)(setup.exe)..... 
    cls 
) 
cls 
echo "%lnk%" was not matched to any choices... 
pause 
goto :top 

:: _Arescet