画像ファイル未使用チェック
まだパスのチェックもしてないし、他にも欲しい機能があるけどとりあえず。
// 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();