画像ファイル未使用チェック

まだパスのチェックもしてないし、他にも欲しい機能があるけどとりあえず。

// ImageFileSearch.ms
// ■特定のディレクトリ配下にあるHTMLファイルの中から
// IMGタグの画像ファイル名を抽出し、一覧を出力する。
// 
// ■特定のディレクトリ配下にある画像ファイルの一覧を出力する

// outputウィンドウをクリア
output[7].clear();
output.select(7);


// ■■■■■■■■■■
// ■  変数宣言  ■
// ■■■■■■■■■■
// HTMLが格納されているディレクトリのフルパス
var dir_html = '';

// 画像ファイルが格納されているディレクトリ名フルパス
var dir_img = '';

// HTMLファイル名のリスト
var list_html = new Array();

// 画像ファイル名のリスト
var list_img = new Array();

// 未使用画像ファイルのリスト
var list_unused_img = new Array();

// 検索する画像ファイル拡張子
var list_extension = new Object();
list_extension["jpg"] = 1;
list_extension["gif"] = 1;
list_extension["png"] = 1;
list_extension["jpeg"] = 1;
list_extension["bmp"] = 1;

// フォルダ選択ダイアログの初期パス
var init_path = "C:\\program files";

// ダイアログボックスで設定した検索オプション
var option_result = null;


// ■■■■■■■■■■
// ■   関数定義   ■
// ■■■■■■■■■■

//テンプレート 縦配置用関数
function HorzFlow(){
	var flow = new Array();
	flow.type = "HFLOW";
	
	for (var i = 0; i < arguments.length; i++){
		flow.push(arguments[i]);
	}
	return flow;
}

// テンプレート横配置用関数
function VertFlow(){
	var flow = new Array();
	flow.type = "VFLOW";
	
	for (var i = 0; i < arguments.length; i++){
		flow.push(arguments[i]);
	}
	return flow;
}

// フォルダ選択ダイアログ
function select_dir(){
	if(global._IMS_DIRPATH_ == null){
		global._IMS_DIRPATH_ = init_path;
	}
	
	var dir = folderBox("フォルダ選択", global._IMS_DIRPATH_);
	if(dir != null){	//フォルダ選択時、グローバル変数にセット
		global._IMS_DIRPATH_ = dir;
	}else{				//フォルダ選択キャンセル時、abort
		abort();
	}
}

// フォルダ一覧取得
function getDir(d){
	var num_of_dir = 0;
	var dir_list = new Array();
	dir_list[0] = d;
	var file_list = new Array();
	file_list = null;
	
	num_of_dir = dir_list.length;
	file_list = File.dir(dir_list[0]);  //TOPディレクトリを配列にセット
	
	for(i=0; i<num_of_dir; i++){        //ディレクトリの数だけループ
        output[7].writeln("\n=== Directory ===");
        output[7].writeln(dir_list[i]);
		output[7].writeln("-----------------");
		for(j=0; j<file_list.length; j++){  //ディレクトリ内のファイルの数だけループ
            // ディレクトリの追加
			if(File.isFolder(file_list[j])){
				num_of_dir++;
				dir_list = dir_list.concat(File.getFullPath(file_list[j]));
			}
            // ファイルの追加
            if(File.isFile(file_list[j])){
                // htmlのリスト作成
                if(file_list[j].match(/[\w*][\.]html/i) != null){
                    list_html = list_html.concat(File.getFullPath(file_list[j]));
                    output[7].writeln(file_list[j]);  // debug print
                }
                // imgのリスト作成
                // jpg
                if( (file_list[j].match(/[\w*][\.]jpg/i) != null)&&(list_extension["jpg"] == 1) ){
                    list_img = list_img.concat(File.getFullPath(file_list[j]));
                    output[7].writeln(file_list[j]); //debug print
                }
                // gif
                if( (file_list[j].match(/[\w*][\.]gif/i) != null)&&(list_extension["gif"] == 1) ){
                    list_img = list_img.concat(File.getFullPath(file_list[j]));
                    output[7].writeln(file_list[j]);
                }
				// png
				if( (file_list[j].match(/[\w*][\.]png/) != null)&&(list_extension["pcg"] == 1) ){
					list_img = list_img.concat(File.getFullPath(file_list[j]));
					output[7].writeln(file_list[j]);
				}
				// jpeg
				if( (file_list[j].match(/[\w*][\.]jpeg/) != null)&&(list_extension["jpeg"] == 1) ){
					list_img = list_img.concat(File.getFullPath(file_list[j]));
					output[7].writeln(file_list[j]);
				}
				// bmp
				if( (file_list[j].match(/[\w*][\.]bmp/) != null)&&(list_extension["bmp"] == 1) ){
					list_img = list_img.concat(File.getFullPath(file_list[j]));
					output[7].writeln(file_list[j]);
				}
				
            }
        }
		file_list = File.dir(dir_list[i+1]);
    }
    //alert(dir_list); //debug pring
    //alert(list_html); //debug pring
    //alert(list_img); //debug pring
}

// 未使用画像ファイルチェック
function unUsedImageCheck(){
	var lines = null;	//ファイル内容用変数
	list_unused_img = list_img;
	for(i=0; i<list_html.length; i++){
		tempFile = new File(list_html[i]);
		tempFile.open();
		lines = '';
		while(!tempFile.eof()){
			lines = lines + tempFile.readLine();
		}
		tempFile.close();
		j = 0;
		while(j<list_unused_img.length){
			var reg = new RegExp(list_unused_img[j].replace(/^.*[\\\/]/, ""), "i");
			if(reg.exec(lines) != null){
				list_unused_img.splice(j, 1);
			}else{
				j++;
			}
		}
		// 全ての画像が使われていることが確定したらloopから抜ける
		if(list_unused_img.length == 0){
			output[7].writeln("**********************************");
			output[7].writeln("***未使用画像はありませんでした***");
			output[7].writeln("**********************************");
			beep();
			break;
		}
	}
	// 未使用画像の一覧表示
	output[7].writeln("**********************************");
	output[7].writeln("***       未使用画像一覧       ***");
	output[7].writeln("**********************************");
	for(k=0; k<list_unused_img.length; k++){
		output[7].writeln(list_unused_img[k]);
	}
	beep();
	beep();
}

			




// ■■■■■■■■■■■■■■■
// ■フォルダ選択ダイアログ表示■
// ■■■■■■■■■■■■■■■
// ダイアログテンプレート
var dlg_temp = [
	VertFlow(
			 HorzFlow(	// HTMLファイル名指定
					  {type: "EDIT", name: "DIR_HTML", label: "HTMLフォルダ", value: dir_html, width: "150", x: "45"},
					  {type: "BUTTON", name: "sel_html_butt", width: "10", label: "...", 
			onClick: function(dialog){select_dir();	dialog.setValue("DIR_HTML", _IMS_DIRPATH_);}}
					  ),
			 HorzFlow(	// IMGファイル名指定
					  {type: "EDIT", name: "DIR_IMG", label: "IMGフォルダ", value: dir_img, width: "150", x: "45"},
					  {type: "BUTTON", name: "sel_img_butt", width: "10", label: "...",
			onClick: function(dialog){select_dir(); dialog.setValue("DIR_IMG", _IMS_DIRPATH_);}}
					  ),
			 HorzFlow(	// 拡張子指定
					  {type: "STATIC", value:"検索する拡張子"},
					  {type: "CHECK", name: "jpg", label: ".jpg", value: list_extension["jpg"]},
					  {type: "CHECK", name: "gif", label: ".gif", value: list_extension["gif"]},
					  {type: "CHECK", name: "png", label: ".png", value: list_extension["png"]},
					  {type: "CHECK", name: "jpeg", label: ".jpeg", value: list_extension["jpeg"]},
					  {type: "CHECK", name: "bmp", label: ".bmp", value: list_extension["bmp"]}
					  )
			 )
];

// ダイアログ表示
var dialog = new Dialog("検索オプション", dlg_temp);
dialog.addOkCancel = Dialog.ADD_OKCANCELLINE;
dialog.open();


// ■■■■■■■■■■■■
// ■ ファイル一覧取得 ■
// ■■■■■■■■■■■■
getDir(dialog.results.DIR_HTML);


// ■■■■■■■■■■■■■
// ■ 未使用画像チェック ■
// ■■■■■■■■■■■■■
unUsedImageCheck();
output[7].copyOutputWindow();