9 Replies Latest reply on Dec 30, 2015 12:13 AM by Johnwhite

    How to creat file.parent in others location?

    Johnwhite Level 1

      Hi experts

       

      My script is copy the rootFolder's files to other location for backup used will then clear the underline.

       

      my script:

       

      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
      var
      mMsg = {title: "Clear_Markup"},
      backupFolder = Folder("~/Desktop/BACKUP/"),
      rootFolder = Folder.selectDialog ("Select the root folder"),
      myFiles = [];  
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
          if (!rootFolder) exit();
              backupFolder.create();
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                  copyFolder(rootFolder, backupFolder); 
                       
                      function copyFolder(rootFolder, backupFolder) { 
                              var rootChildrenArr = rootFolder.getFiles(); 
                              for (var i = 0; i < rootChildrenArr.length; i++) { 
                                  var rootChild = rootChildrenArr[i]; 
                                  var backupChildStr = backupFolder.fsName + "/" + rootChild.name; 
                                  if (rootChild instanceof File) { 
                                      copyFile(rootChild, new File(backupChildStr)); 
                                 } 
                                  else { 
                                      copyFolder(rootChild, new Folder(backupChildStr)); 
                                  } 
                              } 
                          } 
                      function copyFile(rootFile, backupFile) { 
                          createFolder(backupFile.parent); 
                          rootFile.copy(backupFile); 
                          } 
                       
                      function createFolder(folder) { 
                          if (rootFolder.parent !== null && !rootFolder.parent.exists) { 
                              createFolder(rootFolder.parent); 
                              } 
                              folder.create(); 
                              } 
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                  getsubfolderfiles(rootFolder);  
                  app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
                      for (var k = 0; k < myFiles.length; k ++)  
                                {  
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
              var myDocs = app.open(myFiles[k],false);
                                                          app.findGrepPreferences = app.changeGrepPreferences = null;     
                                                          app.findGrepPreferences.underline = true;     
                                                          app.changeGrepPreferences.underline  = false;     
                                                          app.documents.everyItem().changeGrep();     
                                                          app.findGrepPreferences = app.changeGrepPreferences = null; 

                                                          for (s=0; s<myDocs.stories.length; s++) 
                                                          { 
                                                              for (t=0; t<myDocs.stories[s].tables.length; t++) 
                                                              { 
                                                                  for (c=0; c<myDocs.stories[s].tables[t].cells.length; c++) 
                                                                  { 
                                                                      if(myDocs.stories[s].tables[t].cells[c].contents == "" && myDocs.stories[s].tables[t].cells[c].texts[0].underline==true) 
                                                                      { 
                                                                          myDocs.stories[s].tables[t].cells[c].texts[0].underline=false; 
                                                                      } 
                                                                  } 
                                                              } 
                                                          } 
                                                      myDocs.save();  
                                                      myDocs.close(); 
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                                                      }  
               function getsubfolderfiles(rootFolder)  
                              {  
                                    var filelist = rootFolder.getFiles();  
                                    for(var a = 0; a < filelist.length; a++)  
                                          {  
                                              if(filelist[a] instanceof Folder)  
                                                {  
                                                  getsubfolderfiles (filelist[a]);  
                                                  }  
                                                  else if(filelist[a] instanceof File)  
                                                  {  
                                                  if(filelist[a].name.indexOf(".indd") > -1){  
                                                  myFiles.push(filelist[a]);  
                                                }  
                                            }  
                                        }  
                                    } 
               app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
               alert("Finish") ;
      //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

       

      my goal is create a new folder in the (new folder ("~/Desktop/BACKUP/"));

       

       

      the new folder name same my rootFolder

      will then copy the roofFolder's files to the new location

       

      but the part of create file.parent in other location (which I make a bold type) unfunction

      could someone please tell how to define the new location for new folder to creat?

      my new folder name = rootFolder name

       

      Thanks

      Regard

      John

        • 1. Re: How to creat file.parent in others location?
          Harbs. Level 6

          Try this (untested):

           

          function createFolder(folder) {
              if (rootFolder.parent && rootFolder.parent != folder) {
                  createFolder(rootFolder.parent);
              }
              if(!folder.exists){
                  folder.create();
              }
          }
          
          • 2. Re: How to creat file.parent in others location?
            Johnwhite Level 1

            thank you Harbs

            but error.

             

            thank you so much.

            John

            • 3. Re: How to creat file.parent in others location?
              UQg Level 4

              I think this should work (ony did a quick test):

              function backup(source, dest){
                 
                  if (!source instanceof Folder || !source.exists) throw "wrong source input";
                  if (!dest instanceof Folder || !dest.parent.exists) throw "wrong destination input";
                  if (!dest.exists) dest.create();
                 
                  var rootURI = dest.absoluteURI;
                  var subfolders=[], n, N;
                 
                  source.getFiles(function handler(f){
                      if (f instanceof File){
                          f.copy(new File(rootURI+ encodeURI("/"+f.displayName)));
                          }
                      else{
                          subfolders.push({source: f, dest: new Folder(rootURI + encodeURI("/"+f.displayName))});
                          };
                      });
                 
                  for (n=0, N=subfolders.length; n<N; n++){
                      backup(subfolders[n].source, subfolders[n].dest);
                      };
                  subfolders = 0;
                  return;
                  };
              

               

              test (duplicates the folder in the same parent folder):

              var folder = Folder.selectDialog();
              backup(folder, new Folder(folder.path+encodeURI("/"+folder.displayName+"_BACKUP")));
              

               

              Xavier

              • 4. Re: How to creat file.parent in others location?
                Johnwhite Level 1

                Thank you Xavier

                thank you so much, I works like a charm, but how can I change the backu folder part to "~/Desktop/BACKUP_B/"

                 

                I slightly change the script, but not working,

                 

                see this:

                 

                //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                var
                mMsg = {title: "Clear_Markup"},
                     backupParent = Folder("~/Desktop/BACKUP_2/"),
                     rootFolder = Folder.selectDialog ("Select the root folder"),
                     myFiles = [];  
                //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                    if (!rootFolder) exit();
                        backupParent.create();
                //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

                                backup(folder, new Folder("~/Desktop/BACKUP_2"("/"+folder.displayName+"_BACKUP")));

                                    function backup(source, dest){ 
                                        
                                            if (!source instanceof Folder || !source.exists) throw "wrong source input"; 
                                            if (!dest instanceof Folder || !dest.parent.exists) throw "wrong destination input"; 
                                            if (!dest.exists) dest.create(); 
                                        
                                    var rootURI = dest.absoluteURI; 
                                            var subfolders=[], n, N; 
                                        
                                        source.getFiles(function handler(f){ 
                                            if (f instanceof File){ 
                                                f.copy(new File(rootURI+ encodeURI("/"+f.displayName))); 
                                                } 
                                            else{ 
                                                subfolders.push({source: f, dest: new Folder(rootURI + encodeURI("/"+f.displayName))}); 
                                                }; 
                                            }); 
                                        
                                        for (n=0, N=subfolders.length; n<N; n++){ 
                                            backup(subfolders[n].source, subfolders[n].dest); 
                                            }; 
                                        subfolders = 0; 
                                        return; 
                                        }; 
                //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

                 

                Could you please help me to fix it?

                 

                thanks

                Regard

                John

                • 5. Re: How to creat file.parent in others location?
                  UQg Level 4

                  Hum, i think that when i answered i only partly understood the question.

                  The problem in your own code is, i think, the part:

                   

                  var backupChildStr = backupFolder.fsName + "/" + rootChild.name;

                   

                  You shouldnt mix .fsName (which is system dependant) and .name (which is in Adobe's URI convention).

                  Probably both

                   

                  var backupChildStr = backupFolder.absoluteURI + "/" + rootChild.name;
                  

                   

                  and

                   

                  var backupChildStr = backupFolder.absoluteURI + encodeURI(("/" + rootChild.displayName);
                  

                   

                  would work (the latter is the one i used in my first answer, but the first one would work too).

                   

                  Xavier.

                  • 6. Re: How to creat file.parent in others location?
                    UQg Level 4

                    Hum sorry, i just corrected my previous answer and didnt see your message (i didnt refresh).

                    The corrected answer is probably more useful than the fullcode one.

                    But if you want to use it, then it would be:

                     

                    backup(folder, new Folder("~/Desktop/BACKUP_2"+"/"+folder.name));

                     

                    alternatively (using your backupParent variable):

                     

                    backup(folder, new Folder(backupParent.absoluteURI+"/"+folder.name));

                     

                    Xavier.

                    • 7. Re: How to creat file.parent in others location?
                      Johnwhite Level 1

                      thank you Xavier

                       

                      but I received a error says the backupParent undefine

                       

                      Regard

                      John

                      • 8. Re: How to creat file.parent in others location?
                        UQg Level 4

                        How ? You defined it and created it at the beginning of your code.

                         

                        Xavier.

                        • 9. Re: How to creat file.parent in others location?
                          Johnwhite Level 1

                          I don't know, but the error tells me,

                           

                          backup(folder, new Folder(backupParent.absoluteURI+"/"+folder.name));

                           

                          undefine