1. ホーム
  2. ウィンドウズ

[解決済み] [Solved] バッチファイルのパラメータが空かどうかをテストする適切な方法は何ですか?

2022-04-04 13:35:49

質問

ある変数が設定されているかどうかをテストする必要があります。 いくつかのテクニックを試してみましたが、以下のような場合はいつも失敗するようです。 %1 が引用符で囲まれている場合、例えば %1"c:\some path with spaces" .

IF NOT %1 GOTO MyLabel // This is invalid syntax
IF "%1" == "" GOTO MyLabel // Works unless %1 has double quotes which fatally kills bat execution
IF %1 == GOTO MyLabel // Gives an unexpected GOTO error.

によると このサイト で、これらはサポートされています。 IF の構文タイプです。というわけで、方法は見当たりません。

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

UPDATE: 2020-10-25に、受理された回答を、括弧を使うことからチルダを使うことに更新しました。 皆さん、チルドの方が安全で良いとおっしゃっています。 しかし、チルダはより複雑に見え、その目的が明確でないため、私は少し悩んだが、それでも変更した。

解決方法は?

使用することができます。

IF "%~1" == "" GOTO MyLabel

で、外側の引用符のセットを削除します。 一般に、この方法は角括弧を使うよりも信頼性が高く、変数にスペースがあっても動作します。