if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
条件と goto の両方で括弧を付けて、または付けずに試してみました。また、引用符を付けずに試してみました。もちろん、同じ行で goto を使用しても、常に true が返されます。
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
条件と goto の両方で括弧を付けて、または付けずに試してみました。また、引用符を付けずに試してみました。もちろん、同じ行で goto を使用しても、常に true が返されます。
あなたは非常にばかげたエラーを持っています:-)
条件が true の場合、ラベルに GOTO します。
条件が false の場合、GOTO は実行されませんが、たまたまラベルになっている次の行に進みます。
どちらでも同じ結果!
その他の問題 -
1) あなたの論理は逆だと思います。%1 が定義されている場合は、GOTO :l2 のみが必要だと思います。逆の場合があります。
2) (引用符を含む) の %1 値"A&B"
は失敗します。"%~1"
代わりに使用する方が良い"%1"
3) 比較に x は必要ありません。
簡単に修正:
if "%~1" neq "" goto :l2
exit /b
:l2
echo doskey %1>>startup.cmd
goto は本当に必要ありません。
if "%~1" neq "" echo doskey %1>>startup.cmd