Windows-バッチ,10個以上の引数を変数に格納する方法

スポンサーリンク

鍛錬 478

Windows-バッチ,10個以上の引数を変数に格納する方法

引数を取得する場合は %1 ~ %9 まで最大9個の変数に格納されますが、10個以上の引数を変数に格納するには、shift を使用します。

スポンサーリンク

バッチファイル

以下は、10個以上の引数を変数に格納するバッチファイル、test_shift.bat です。

今回は、shift でシフトさせながら、変数 %1 に格納しています。

変数に格納する際には動的配列を利用しています。

関連記事:Windows-バッチ,文字列を1文字ずつ動的配列に格納する

@echo off

rem ファイル全体の setlocal
setlocal

rem 配列の要素番号を初期化
set num=0

rem 引数を取得

:LOOP_SET
if not "%1"=="" (
	set array[%num%]=%1
	set /A num=%num%+1
	shift
	goto :LOOP_SET
)

rem 引数が0個の場合
if %num% equ 0 (
	echo 引数無し
	goto BATCH_END
)

set /A num=%num%-1

rem 遅延環境変数の展開
setlocal enabledelayedexpansion

rem 配列に格納した文字列を印字
set i=0
for /l %%i in (0,1,%num%) do (
	echo array[%%i] = !array[%%i]!
)

rem 遅延環境変数の展開終了
endlocal

rem ファイル全体の endlocal
endlocal

exit /b 0

:BATCH_END
rem ファイル全体の endlocal
endlocal

exit /b 0
スポンサーリンク

実行結果

以下は、バッチファイル test_shift.bat の起動時に12個の引数を指定し、変数に格納後に内容を表示しています。

D:\tmp>
D:\tmp>test_shift.bat A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
array[0] = A1
array[1] = A2
array[2] = A3
array[3] = A4
array[4] = A5
array[5] = A6
array[6] = A7
array[7] = A8
array[8] = A9
array[9] = A10
array[10] = A11
array[11] = A12

 
上記に示した通り、10個以上の引数を変数に格納することができました。

タイトルとURLをコピーしました