プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

Batch forコマンドでファイル読み込み

■事前準備

読み込み用に下記ファイルを用意する
 
・sample1.txt

AA
BB
CC

・sample2.txt

AA aa
BB bb
CC cc

・sample3.txt

AA,aa
BB,bb
CC,cc

・sample4.txt

AA
BB

CC

 
 


■forコマンドを記述した「Run.bat」を作成する

@echo off

rem 1行目だけを読み込んで表示
echo === ファイルの1行目だけを読み込んで表示します ===
set /p str=<sample1.txt
echo %str%

echo;

rem ファイル内容を読み込んで表示
rem 「f」オプションでファイル読み込み
echo === ファイルの内容を読み込んで表示します ===
for /f %%a in (sample1.txt) do (
    echo %%a
)

echo;

rem ファイルサイズを取得して表示
rem 「~z」を変数に追記してバイト数取得
echo === ファイルサイズを取得して表示します ===
for %%a in (sample1.txt) do (
    set size=%%~za
)
echo %size%バイト

echo;

rem スペースを含んだファイル内容を読み込んで表示
rem 「"delims="」でスペース等があっても1行読み込む
echo === スペースを含んだファイルの内容を1行目から3行目まで読み込んで表示します ===
for /f "delims=" %%a in (sample2.txt) do (
    echo %%a
)

echo;

rem スペースを含んだファイル内容を読み込んで表示
rem "tokens=列番号 delims=スペース"
echo === スペースを含んだファイルの内容の2列目の文字列を読み込んで表示します ===
for /f "tokens=2 delims= " %%a in (sample2.txt) do (
    echo %%a
)

echo;

rem カンマ区切りのファイル内容を読み込んで表示
rem "tokens=開始列番号-最終列番号 delims=カンマ"
rem 「%%a」を1列目とした場合、その次の列は「&&b」
echo === カンマ区切りのファイルの内容を読み込んで表示します ===
for /f "tokens=1-2 delims=," %%a in (sample3.txt) do (
    echo %%a %%b
)

echo;

rem 行数を表示 ※空行含まず
rem 「a」オプションで計算結果を代入
rem count+=1 ⇒ 1ずつ増やして変数countに代入
echo === 行数を表示 ※空行含まず ===
set count=0
for /f "delims=" %%a in (sample4.txt) do (
 set /a count+=1
)
echo %count%行

echo;

pause

 
「Run.bat」を実行して内容を確認