lisz-works

技術系だけど関係ないこと多い系ブログ

UWSCでフォルダ内の対象拡張子のファイルを一括処理

【スポンサーリンク】

UWSC

UWSCというWindows自動化ツールで、対象フォルダ内の、対象の拡張子のファイルを一括処理する方法です。

具体的な処理ではなく、一括処理の枠組みのご紹介です。

これを使えば、ある拡張子のファイルのみ、一定の処理を行うことができます。

自動化大正義ですね。

一括処理のソース

ソースはこちら。

// 作業対象の対象フォルダパス
dim dirPath = "C:\work\"
// 作業対象のファイル
dim target = "*.txt"

// 処理中のファイル名称
dim fileName = ""

// 拡張子が[txt]のファイル一覧取得
n = getdir(dirPath, target, FALSE, 0)

// 取得した一覧分、ファイルを一括処理
// getdirの結果は「GETDIR_FILES[]」に入る
for i = 0 to (length(GETDIR_FILES) - 1)
    // 処理するファイル名を表示
    print GETDIR_FILES[i] 
    
    // ファイル名を順々に取得
    fileName = GETDIR_FILES[i]
    
    // ~ ここにやりたい処理を書く ~
next

print "おわったよ"

今回は対象のフォルダと拡張子を、決め打ちにしています。
ここは可変になるように設定しておけば、汎用性の高いソースになりそうですね。

まぁフリー版を使っているので、その場に応じてソース書き換えるとかならこれでいい気もしますが。

初期設定

下記2つの変数の値を設定します。

  1. dirPath:作業対象のフォルダパス
  2. target:作業対象のファイル

dirPathには、作業対象のパスのフルパスを、最後に「\」を付けてセットしてください。

targetには、作業対象のファイル名を入れてください。
「*」はワイルドカードとして扱われます。

なので、例のように「*.txt」と書くと、拡張子がtxtの全てのファイルが対象となります。

処理を書く場所

「next」の上の「ここにやりたい処理を書く」のコメント箇所に、実際に行いたい処理を書きます。

fileNameを使用して、何かしらの処理を書いてあげることで、対象のファイルを1個順々に処理していってくれます。

ちなみに、分かりやすくするために一旦fileNameに現在のファイル名をセットしていますが、そのままGETDIR_FILES[i]を使ってもOKです。

処理を成功させるコツ

UWSC極められてない勢としての意見ですが……

処理を成功させるコツとして、「キーボードの処理のみで完結するようにする」というのがオススメです。

基本的にショートカットキーで、大半の動作は行えます。

なので、「いかにキーボードで操作できるか?」を考えてみると、処理が成功しやすいと感じました。

昔ブラウザの自動操作マクロを作ろうとして、クリック処理結構うまくいかなくてヤキモキしてたんですよね……

キーボードなら回数打てばいいので、泥臭い処理になっちゃったとしても、確実性が数段上がります。

処理が一通りいけるなら、簡単な手順は

  1. 記録で操作
  2. 保存
  3. スクリプトを調整

スクリプトの調整は、ウェイト時間や無駄な処理等を削ったりするためのメンテです。

これだけで、かなり簡単にスクリプト作れちゃいます。

あとがき

いかがでしたでしょうか?

UWSCは使いこなせば、ホント神がかったツールです。

手軽に動作記録できるのも利点の1つですね。

バックグラウンド処理も可能なはずなので、作業の裏で何かを自動処理……

とか作ったりすると……ヤバいですね。ヤバいです(語彙力)