batch-file
バッチファイルのコマンドライン引数
サーチ…
バッチファイルに提供されるコマンドライン引数
バッチファイルのコマンドライン引数は、バッチを開始するときに送信されるパラメータ値です。スペースが含まれている場合は引用符で囲む必要があります。実行中のバッチファイルでは、引数はさまざまな目的、つまり: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
し、引数でそれを呼び出す1
、 2
および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