Advertisement
usamimi2323

単ページフォルダ解消.js

Nov 15th, 2023
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 3.17 KB | Source Code | 0 0
  1. //
  2. // 単ページフォルダ解消.js
  3. //
  4. // 「単ページ」フォルダ内の単ページファイルを親フォルダに移動
  5. // 同ページの「見開き結合ページ」ファイルを削除し、「単ページ」フォルダを削除
  6. //
  7. //
  8. // cscript.exe <単ページフォルダ解消.js> <フォルダパス> <フォルダパス> <フォルダパス> ...
  9. //
  10. // ※ <フォルダパス> のフォルダ名が単ページ、見開き、singleのいずれかなら、
  11. //   その親フォルダを対象にする
  12. //
  13.  
  14. var fso = new ActiveXObject( "Scripting.FileSystemObject" );
  15. var output_on = /\\cscript\.exe$/i.test(WScript.FullName);
  16.  
  17. function singlepage_merge(path)
  18. {
  19.     var f = "";
  20.    
  21.     //フォルダのみ対応
  22.     if (fso.FolderExists(path))
  23.     {
  24.         var fo = fso.getFolder(path);
  25.         var enum_sf = new Enumerator(fo.SubFolders);
  26.         for(; ! enum_sf.atEnd(); enum_sf.moveNext())
  27.         {
  28.             var subf = enum_sf.item();
  29.             WScript.echo(subf);
  30.             var subfolder_name = subf.Name;
  31.             if (subfolder_name == '単ページ'
  32.              || subfolder_name.toLowerCase() == 'single'
  33.              || subfolder_name == '見開き')
  34.             {
  35.                 var files = [];
  36.                
  37.                 var f2o = fso.getFolder(path+"\\"+subfolder_name);
  38.                 var enum_sff = new Enumerator(f2o.Files);
  39.                 for(; ! enum_sff.atEnd(); enum_sff.moveNext())
  40.                 {
  41.                     var filename = enum_sff.item().Name;
  42.                     files.push(filename);
  43.                    
  44.                     var src = path+"\\"+subfolder_name+"\\"+filename;
  45.                     var dest = path + "\\";
  46.                     fso.MoveFile(src, dest);
  47.                     if (output_on)
  48.                         WScript.Echo('Move "'+src+"\", \""+dest+'"');
  49.                 }
  50.                 enum_sff=null;
  51.                 f2o=null;
  52.                
  53.                 files = files.sort();
  54.                
  55.                 // 各ファイルで一つ後ろのファイルとの見開きページがあればそれを削除
  56.                 // (単ページがある分だけ削除)
  57.                 for (var j = 0; (j+1) < files.length; j++)
  58.                 {
  59.                     var r1 = files[j].match(/^(.+?)(\d+)\..+?$/);
  60.                     var f_pre = r1[1];
  61.                     var f_d1 = r1[2];
  62.                    
  63.                     var r2 = files[j+1].match(/^.+?(\d+)(\..+?)$/);
  64.                     var f_d2 = r2[1];
  65.                     var f_ext = r2[2];
  66.                    
  67.                     var deletefile_1 = path+"\\"+f_pre+f_d1+"-"+f_d2+f_ext;
  68.                     var deletefile_2 = path+"\\"+f_pre+f_d2+"-"+f_d1+f_ext; //  逆順になっている場合への対応(151-150.jpg)
  69.                    
  70.                     if (fso.FileExists(deletefile_1))
  71.                     {
  72.                         fso.DeleteFile(deletefile_1, true);
  73.                         if (output_on)
  74.                             WScript.Echo('Delete "'+deletefile_1+'"');
  75.                     }
  76.                     else if (fso.FileExists(deletefile_2))
  77.                     {
  78.                         fso.DeleteFile(deletefile_2, true);
  79.                         if (output_on)
  80.                             WScript.Echo('Delete "'+deletefile_2+'"');
  81.                     }
  82.                     else    // inc j
  83.                         continue;
  84.                    
  85.                     j++;    // add j, 2
  86.                 }
  87.                
  88.                 fso.DeleteFolder(path+"\\"+subfolder_name, true);
  89.                 if (output_on)
  90.                     WScript.Echo('Delete "'+path+'\\'+subfolder_name+'"');
  91.                
  92.                 //単ページフォルダがあれば現在のフォルダ走査終了
  93.                 break;
  94.             }
  95.             else
  96.                 singlepage_merge(path + "\\" + subfolder_name);
  97.         }
  98.         enum_sf=null;
  99.         fo = null;
  100.     }
  101. }
  102.  
  103. var args = WScript.Arguments;
  104. for (var c=0;c < args.length;c++)
  105.     singlepage_merge(args(c).replace(/\\+(単ページ|single|見開き)$/i,""));
  106.  
  107. fso=null;
  108.  
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement