サーチ…


バッチファイルに提供されるコマンドライン引数

バッチファイルのコマンドライン引数は、バッチを開始するときに送信されるパラメータ値です。スペースが含まれている場合は引用符で囲む必要があります。実行中のバッチファイルでは、引数はさまざまな目的、つまり:labels 、設定変数、または実行コマンドへのリダイレクトに使用されます。

引数は%1, %2, ..., %9を使用してバッチファイルで参照されます。

@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
    set "dir=%~1" & set "file=%~2"
    type !dir!\!file! | find /n /i "True" >nul^
     && echo Success! || echo Failure
)
exit /b

C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!

ノート:

  • 上の例では、二重引用符は引数修飾子%~1を使用して削除されています。
  • 長い文字列は、 ^を使用して複数の行に分割され、次の行の文字の前にスペースがあります。

9つ以上の引数を持つバッチファイル

以上9つの引数が供給されると、 shift [/n]コマンドを使用することができ、ここで、 /n手段は、n番目の引数で開始し、nはゼロと8の間です。

引数をループする:

:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args

上記の例では、遅延拡張変数iを使用して、変数arrayに引数値を代入しています。 callコマンドを使用すると、そのような変数値をループ内に表示できます。

引数を数える:

for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%

n番目の引数に変数を設定する:

set i=5
call set "path%i%=%%~i"

角カッコ内の引数のシフト

以下の持っていることができますexample.batし、引数でそれを呼び出す12および3

@echo off

(
    shift
    shift
    echo %1
)

変数の展開が終わり括弧の文脈に到達した後に変化するので、出力は次のようになります:

1

引数にアクセスするために角カッコをシフトするときには、これが問題になる可能性があるので、あなたはcallを使う必要があります:

@echo off

(
    shift
    shift
    call echo %%1
) 

出力は3ます。この手法では、 CALLコマンドを使用すると(追加の変数展開につながります)、引数のアクセスもパラメータ化できます。

@echo off

set argument=1

    shift
    shift
    call echo %%%argument%

遅延拡張あり:

@echo off
setlocal enableDelayedExpansion
set argument=1

    shift
    shift
    call echo %%!argument!

出力は

3



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow