質問 1 : このように IF のネストを行う方が簡単であることがわかる場合があります (読みやすくするため)。
..
::Handle the case where the install dir is specified as a drive
if not "%1" == "" (
if /I "%1" == "%~d1" (
set INSTALL_DIR=%~d1
)
)
..
これにより、「if」インスタンスで複数のコマンドをネストすることもできます。例えば:
..
::Handle the case where the install dir is specified as a drive
if not "%1" == "" (
echo Parameter 1 is not empty
if /I "%1" == "%~d1" (
echo Parameter 1 is a drive so setting the variable
set INSTALL_DIR=%~d1
)
)
..
質問 2 : あなたの例では、テストではパラメーターがドライブまたはパス (ドライブを含む) のいずれかである必要があり、パラメーターをドライブのみにフィルター処理します。
それは十分ですか?それは、次のような追加のチェックを行う必要があるかどうかによって異なります。
- ドライブが存在する場合
- ドライブがローカル ハードディスクの場合
あなたが持っているチェックが十分であるかどうかは、本当にあなた次第であり、あなたのコードがどの程度堅牢である必要があるか、%1 で使用されるものをどの程度制御できるかはあなた次第です。