2012-08-31 49 views
2
if "x%1" == "x" (
goto :l2 
) 
:l2 
echo doskey %1>>startup.cmd 

在條件和goto上試過有和沒有括號,也沒有用引號試過,當然也試着在同一行上 - 它總是返回true。批處理:if語句與字符串比較總是返回true

+0

你傳遞一個參數到您的批處理腳本? '%1'是傳遞給腳本的第一個參數的值;如果你沒有通過論證,if語句將永遠是真實的。你想用你的'if'語句完成什麼? –

+0

是的,我傳遞了參數。 – UIlrvnd

+0

不,它不會 - 但是完全相同的代碼執行無關的評估。 – wmz

回答

7

你有一個非常愚蠢的錯誤:-)

如果條件爲真,你GOTO標籤。

如果條件爲false,那麼不要轉到GOTO,而是轉向下一行,這恰好就是您的標籤。

同樣的結果!

其他問題 -

1)我認爲你的邏輯是相反的。我相信你只想要GOTO:l2如果定義了%1,則反過來。

2)"A&B"(包括引號)的%1值將失敗。最好使用"%~1"而不是"%1"

3)比較中不需要x。

容易固定:

if "%~1" neq "" goto :l2 
exit /b 
:l2 
echo doskey %1>>startup.cmd 

你真的不需要轉到:

if "%~1" neq "" echo doskey %1>>startup.cmd