Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // 単ページフォルダ解消.js
- //
- // 「単ページ」フォルダ内の単ページファイルを親フォルダに移動
- // 同ページの「見開き結合ページ」ファイルを削除し、「単ページ」フォルダを削除
- //
- //
- // cscript.exe <単ページフォルダ解消.js> <フォルダパス> <フォルダパス> <フォルダパス> ...
- //
- // ※ <フォルダパス> のフォルダ名が単ページ、見開き、singleのいずれかなら、
- // その親フォルダを対象にする
- //
- var fso = new ActiveXObject( "Scripting.FileSystemObject" );
- var output_on = /\\cscript\.exe$/i.test(WScript.FullName);
- function singlepage_merge(path)
- {
- var f = "";
- //フォルダのみ対応
- if (fso.FolderExists(path))
- {
- var fo = fso.getFolder(path);
- var enum_sf = new Enumerator(fo.SubFolders);
- for(; ! enum_sf.atEnd(); enum_sf.moveNext())
- {
- var subf = enum_sf.item();
- WScript.echo(subf);
- var subfolder_name = subf.Name;
- if (subfolder_name == '単ページ'
- || subfolder_name.toLowerCase() == 'single'
- || subfolder_name == '見開き')
- {
- var files = [];
- var f2o = fso.getFolder(path+"\\"+subfolder_name);
- var enum_sff = new Enumerator(f2o.Files);
- for(; ! enum_sff.atEnd(); enum_sff.moveNext())
- {
- var filename = enum_sff.item().Name;
- files.push(filename);
- var src = path+"\\"+subfolder_name+"\\"+filename;
- var dest = path + "\\";
- fso.MoveFile(src, dest);
- if (output_on)
- WScript.Echo('Move "'+src+"\", \""+dest+'"');
- }
- enum_sff=null;
- f2o=null;
- files = files.sort();
- // 各ファイルで一つ後ろのファイルとの見開きページがあればそれを削除
- // (単ページがある分だけ削除)
- for (var j = 0; (j+1) < files.length; j++)
- {
- var r1 = files[j].match(/^(.+?)(\d+)\..+?$/);
- var f_pre = r1[1];
- var f_d1 = r1[2];
- var r2 = files[j+1].match(/^.+?(\d+)(\..+?)$/);
- var f_d2 = r2[1];
- var f_ext = r2[2];
- var deletefile_1 = path+"\\"+f_pre+f_d1+"-"+f_d2+f_ext;
- var deletefile_2 = path+"\\"+f_pre+f_d2+"-"+f_d1+f_ext; // 逆順になっている場合への対応(151-150.jpg)
- if (fso.FileExists(deletefile_1))
- {
- fso.DeleteFile(deletefile_1, true);
- if (output_on)
- WScript.Echo('Delete "'+deletefile_1+'"');
- }
- else if (fso.FileExists(deletefile_2))
- {
- fso.DeleteFile(deletefile_2, true);
- if (output_on)
- WScript.Echo('Delete "'+deletefile_2+'"');
- }
- else // inc j
- continue;
- j++; // add j, 2
- }
- fso.DeleteFolder(path+"\\"+subfolder_name, true);
- if (output_on)
- WScript.Echo('Delete "'+path+'\\'+subfolder_name+'"');
- //単ページフォルダがあれば現在のフォルダ走査終了
- break;
- }
- else
- singlepage_merge(path + "\\" + subfolder_name);
- }
- enum_sf=null;
- fo = null;
- }
- }
- var args = WScript.Arguments;
- for (var c=0;c < args.length;c++)
- singlepage_merge(args(c).replace(/\\+(単ページ|single|見開き)$/i,""));
- fso=null;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement