web-dev-qa-db-ja.com

Windows 7バッチファイル:パラメーターがバッチファイルに渡されたかどうかを確認する方法

90年代半ばに戻って、私はこのようなことをしたことを覚えています:

if %1==. dir

基本的に、上記のコードをdodir.batし、パラメータを渡さずに単独で実行すると、dirコマンドが実行されます。ただし、パラメーターとして何も渡した場合、dirコマンドは実行されません。

Windows 7のバッチファイルでこれを機能させることができないようです。多分私は正しい構文を覚えていません。ヘルパーはいますか?

26

実はif %1.==. command.%1)当時。これでWindows 7で使用できるようになり、動作するはずです。

使用例:

if %1.==. (
    echo No parameters have been provided.
) else (
    echo Parameters:
    echo %*
)
16
Andriy M

if %1.==. dirは、パラメータに"<など

if "%1"==""は、パラメーターに引用符(")。

使用する if "%~1"==""代わりに:

if "%~1"=="" (
    echo No parameters have been provided.
) else (
    echo Parameters: %*
)

これは、WindowsとDOSのすべてのバージョンで機能します。

単体テスト:

C:\>test
No parameters have been provided.

C:\>test "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
53
Tolga

引用符で囲みます。

if "%1"=="" (
    echo "nothing was passed"
) else (
    echo "a parameter was passed"
    dir
)

あなたはエコーを取り除くことができます、私は単に教育目的のためにそれらをそこに置きます。

11
dcp