2
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
在條件和goto上試過有和沒有括號,也沒有用引號試過,當然也試着在同一行上 - 它總是返回true。批處理:if語句與字符串比較總是返回true
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
在條件和goto上試過有和沒有括號,也沒有用引號試過,當然也試着在同一行上 - 它總是返回true。批處理:if語句與字符串比較總是返回true
你有一個非常愚蠢的錯誤:-)
如果條件爲真,你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
你傳遞一個參數到您的批處理腳本? '%1'是傳遞給腳本的第一個參數的值;如果你沒有通過論證,if語句將永遠是真實的。你想用你的'if'語句完成什麼? –
是的,我傳遞了參數。 – UIlrvnd
不,它不會 - 但是完全相同的代碼執行無關的評估。 – wmz