2010年5月3日月曜日

フォルダ以下のファイルを

【種類】
javascriptでWSH(Windows)

【機能】
指定フォルダ以下のファイルに対して何らかの処理を行います。
(本スクリプトでは処理部は実装していません。)
ドラッグ&ドロップで渡されたパスをルートパスとして実行します。
ファイル検索パターンで拡張子などを指定できます。(正規表現)


var fs = new ActiveXObject("Scripting.FileSystemObject");
var files = new Array();
var searchext = /\.bmp$/i; // ファイル検索パターン (例ではbmpファイル)

// D&Dの引数をルートパスにする
strRootPath = WScript.Arguments(0)

// 指定フォルダ以下の全ショートカットリストを取得
GetAllSubFiles(strRootPath, files, searchext);

for (i in files) {
  //ここに処理を実装する。files[i]でファイル名を取り出す。

}

//****************************************************************
// 指定パス以下の指定された正規表現にマッチしたパスのリストを取得
//****************************************************************
function GetAllSubFiles(path, fileList, reg) {
 // フォルダオブジェクト取得
 var f = fs.GetFolder(path)
 // すべてのファイルを抽出
 var fc = new Enumerator(f.Files);
 for(; !fc.atEnd(); fc.moveNext()) {
  strPath = fc.item().Path
  // 正規表現にマッチしたものだけリストに追加
  if (strPath.match(reg)) {
   fileList.push(strPath);
   //WScript.echo(strPath);
  }
 }
 //すべてのサブフォルダ
 var subfc = new Enumerator(f.SubFolders);
 for(; !subfc.atEnd(); subfc.moveNext()) {
  GetAllSubFiles(subfc.item().Path, fileList, reg); // 再帰
 }
}