2
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd

条件と goto の両方で括弧を付けて、または付けずに試してみました。また、引用符を付けずに試してみました。もちろん、同じ行で goto を使用しても、常に true が返されます。

4

1 に答える 1

7

あなたは非常にばかげたエラーを持っています:-)

条件が 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
于 2012-08-31T12:17:01.563 に答える