はじめに
Windowsのコマンドプロンプトで用いるバッチファイルを書くことがそこまでなかったのですが、たまたま調べていたところ配列の扱い(疑似的)が可能ということでメモ。
殴り書きみたいなものなので、その程度と思っていただけると◎。
大前提
エコーの無効化と遅延環境変数の有効化を利用しています。
@echo off
setlocal enabledelayedexpansion
ファイルから読込して代入
同じディレクトリにあるlist.txt
のn行目をarr[n]
に代入したいとき。
set n=1
for /f %%s in (list.txt) do (
set arr[!n!]=%%s
set /a n=n+1
)
Foreachを使いたいとき
Foreachが何なのかみたいな説明はここでは省略しますが、とにかくForeachを使いたいとき。
rem Foreach Loop
set i=1
:FOREACH_FILEPATH
set it=!filepath[%i%]!
if defined it (
set FullPath=%PathFrom%%it%
set /a i+=1
goto :FOREACH_FILEPATH
)
合わせ技の例
ファイルからlistを読み込んで、そこのファイル名からごにょごにょしたいみたいな例。
@echo off
setlocal enabledelayedexpansion
set PathFrom=C:\Users\test\Desktop\
rem filepath[n] <- list[n]
set n=1
for /f %%s in (list.txt) do (
set filepath[!n!]=%%s
set /a n=n+1
)
rem Foreach Loop
set i=1
:FOREACH_FILEPATH
set it=!filepath[%i%]!
if defined it (
set FullPath=%PathFrom%%it%
set /a i+=1
goto :FOREACH_FILEPATH
)