2011年8月1日月曜日

標準アクティビティだけで BAT ファイルを置換(5)

今回は BAT ファイルでループ制御を行うための FOR ステートメントを置き換えてみます。FOR ステートメント自体は非常に多機能で、単純なループ以上の事ができるのですが、まずは定番の「指定した条件に見合うファイル一覧を取得してループ」という形のものを置き換えてみます。
BAT ファイルで記述するとこのような形になります。
   1: FOR %%i in (d:\*.png) do (
   2:   echo %%i
   3: )

これは D:\ 直下に存在する png ファイルの一覧を出力する処理になります。これと同様のものをプログラムで記述すると次のような形になります。
   1: Dim fileLists As String() = System.IO.Directory.GetFiles("D:\", "*.png")
   2: For Each item As String In fileLists
   3:   'なんらかの処理
   4: Next

ワークフローでも同様です。
GetFileLists
Assign アクティビティで GetFiles メソッドの戻り値を取得し、ForEach アクティビティでループする形がやりやすいと思います。なお、BAT ファイルでの FOR ステートメントでは再帰的に検索を行う /R スイッチもあり、下記のように記述できます。
   1: FOR /R "d:\" %%i in (*.png) do (
   2:    echo %%i
   3: )

この場合は、D:\ 直下のみではなくサブフォルダまで全て検索対象となります。これをロジックやワークフローで行う場合は、GetFIles メソッドの別パターンを利用します。
   1: Dim fileLists As String() = System.IO.Directory.GetFiles("D:\", "*.png", SearchOption.AllDirectories)
   2: For Each item As String In fileLists
   3:     '何らかの処理
   4: Next

ワークフローでは、Assign アクティビティで指定している計算式を同様に書き換えることで実現されます。

0 件のコメント:

コメントを投稿