記事一覧

DOSバッチで繰り返し(ループ)処理を実行する

 

  
目次     



  

DOSバッチの繰り返し(ループ)処理

ハロー、みなさん。エジソンです。

DOSバッチで繰り返し処理を実施したい場合はどのように書けばいいでしょうか。ついつい、構文を忘れがちな自分のために、使用頻度の高そうなテンプレートをまとめてみることにします。


ファイルに書かれた内容を繰り返す

繰り返しは for を使用します。

ファイルの内容を読み取るには、 /F オプションです。"delims=" という指定はファイル内容中にスペースやタブが有っても無視し、1行ずつ読み取りたい場合に使用します。

読み取られた内容は、%%i に入ります。do内に処理を書けばOKです。

リスト1-1:loop1.batとして保存
@echo off

for /F "delims=" %%i in (loop1.txt) do (
    echo %%i
)

リスト1-2:loop1.txtとして保存
a
b
c
d
e
f

リスト1-3:実行例
C:\Users\username\Desktop>loop1.bat
a
b
c
d
e
f


特定のディレクトリ内のファイルリストを繰り返す

for文を使用します。オプションは無しです。

カレントディレクトリの指定は間違いのもとなので、%~db0 でカレントパスを取得して、カレントパス内の拡張子が dat (目的に応じて拡張子は適宜変更)のファイルを取得するように指定しました。


DBの実行コマンドに特定のディレクトリ内のスクリプトファイルを引き渡すような使用方法を想定しています。

ちなみに、for /d … とすると、ディレクトリ内のディレクトリ(フォルダ)が対象になります。

リスト2-1:loop2.batとして保存
@echo off

set curpath=%~dp0

for %%i in ("%curpath%*.dat") do (
    echo %%i
) 

リスト2-2:a.datをバッチと同一のディレクトリに保存
a

リスト2-3:b.datをバッチと同一のディレクトリに保存
b

リスト2-4:実行例
C:\Users\username\Desktop>loop2.bat
C:\Users\username\Desktop\a.dat
C:\Users\username\Desktop\b.dat

サブディレクトリも対象にするなら、/r オプションを使います。/r オプションの記載直後にパスを指定しましょう。

リスト2-5:loop3.batとして保存
@echo off

set curpath=%~dp0

for /r "%curpath%" %%i in (*.dat) do (
    echo %%i
) 


単純な繰り返し

for文を使用します。オプションは /i です。カッコの中は (開始値,増分,終了値) です。

リスト3-1:loop4.batとして保存
@echo off

for /l %%i in (1,1,10) do (
    echo %%i
) 

リスト3-2:実行例
C:\Users\username\Desktop>loop4.bat
1
2
3
4
5
6
7
8
9
10 


関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp

ezolab