Login  Register

Re: Select every other image and move into specific folder

Posted by George Patterson on Nov 01, 2013; 8:04pm
URL: http://imagej.273.s1.nabble.com/Select-every-other-image-and-move-into-specific-folder-tp5005416p5005426.html

Hi Rui,
The following macro seems to work if your naming scheme stays the same as
your examples.....that is if E8_001 designates a unique data set and needs
its own folder labeled E8_001_001, etc.
Best,
George



//Get the directory
dir = getDirectory("Choose a Directory ");
SaveDir = getDirectory("Choose a Sort Save Directory ");

//Create file list
list = getFileList(dir);
print("number of files in the Directory ="+ list.length);

Data2="somestring";//just make a variable to use in checking file names

//Look through the list - and move the files to
for (i=0; i<list.length; i++ ) {
if (endsWith(list[i], "/")){
//listFiles(""+SubDirNames[0]+list[i]);
}else{
//Split the Name by "." and look at the first Entry
Data = split(list[i],".");
findDataSet=substring(Data[0],0,lengthOf(Data[0])-4);// remove the 001,
002, 003 designations
if(findDataSet!=Data2){
// Make directory name
DirName = Data[0];
//Ceate that directory
File.makeDirectory(SaveDir+File.separator+DirName);
// Move the file to that Dir
File.rename(dir + list[i],SaveDir + DirName + File.separator + list[i]);
Data2=findDataSet;
}else{
File.rename(dir + list[i],SaveDir + DirName + File.separator + list[i]);
}
}
}






On Fri, Nov 1, 2013 at 1:21 PM, rtas <[hidden email]> wrote:

> I did not describe clearly.
> Essentially I have many images in main folder and images are consist of
> three images as one set.
> These one set of three images (E8_001_001, E8_001_002, E8_001_003) need to
> go one folder.
> Then next  one set of three images (ie. E8_002_001, E8_002_002, E8_002_003)
> need to go another folder.
> I want to keep original image file name and the folder name can be same as
> first image file (E8_001_001, E8_002_001..).
> If i could do this as one code that would be great. But i do not know how.
> so i separate code as three steps:
> first code; select every first image out of three and create the individual
> folder
> second code: select every second image out of three and move them into the
> folder that is associated with the first image
> third code: select every third image out of three and move them into the
> folder that is associated with first and second image. (i don't have this
> yet since the second code has problem of the file name)
>
>
> I have the other code before this as you suggested to use i+=3 instead of
> 2,
> as first code as below:
>
> //Get the directory
>   dir = getDirectory("Choose a Directory ");
>   SaveDir = getDirectory("Choose a Sort Save Directory ");
>
> //Create file list
>         list = getFileList(dir);
>         print("number of files in the Directory ="+ list.length);
>
> //Look throug the list - and move the files to
>         for (i=0; i<list.length; i+=3 ) {
>                         if (endsWith(list[i], "/")){
>                                 //listFiles(""+SubDirNames[0]+list[i]);
>                         }else{
>                         //Split the Name by "." and look at the first Entry
>                                 Data = split(list[i],".");
>
>                         // Make directory name
>                                 DirName = Data[0];
>
>                         //Ceate that directory
>                                 File.makeDirectory(SaveDir+File.separator+
> DirName);
>
>                                                  // Move the file to that
> Dir
>                                 File.rename(dir + list[i],SaveDir + DirName
> + File.separator + list[i]);
>
>                                 }
>                 }
>
>
>
>
> Then the second code is the one i listed as previous post:
>
> dir = getDirectory("Choose main Directory");///this contains the
> subdirectory, and tiffs
> dir2 = getDirectory("choose the subdirectory folder"); ///this contains the
> folder specific to each section
>
>
>         list = getFileList(dir);
>         list2 = getFileList(dir2);
>         print("number of files in the Directory ="+ list.length);
>        n=1;
>
>         for (i=1; i<list.length; i+=2 ) {
>                         if (endsWith(list[i], ".tif")){
>                                  print(list[i]);
>                                 for (k=0; k<list2.length; k++){
>                         if (endsWith(list2[k], "/")){
>
>
>                                 oldpath= dir + File.separator+  list[i];
>                                 newpath = dir2 + File.separator+  list2[k]
> +
> File.separator+ n+".tif"; ///this renames files to 1
>                                 print(newpath);
>                                 print(oldpath);
>
>                                 File.rename(oldpath, newpath);
>
>                                 }
>                 }}}
>
> The problem here is the file name. I cannot keep the original file name and
> move those into the associated folders.
> I appreciate any suggestion.
>
> Rui
>
>
>
> --
> View this message in context:
> http://imagej.1557.x6.nabble.com/Select-every-other-image-and-move-into-specific-folder-tp5005416p5005423.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html