- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
go through each zip folder to get list of files name from it and save in a single table
Hi,
I need some help here. I tried to write the jsl but I got stuck and hope someone can guide me here.
I have a directory that contain 10000+ zipped folders. Each zipped folder has 100+ files.
I want to do task below without unzip WITHOUT UNZIP the zipped folders.
1) get the name of each zipped folder.
2) get into individual zipped folder.
3) get the files in the zipped folder.
4) in a table, add the zipped folder name in column 1 and its files name in column 2.
5) repeat step 1)-4) for the next zipped folder until all done.
Thanks in advance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: go through each zip folder to get list of files name from it and save in a single table
Check out fairly new Uncharted blog post MFI from Selected CSVs in a ZIP . It might give some quite good ideas how to approach this.
Scripting Index seems to have also documentation on ZipArchive:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: go through each zip folder to get list of files name from it and save in a single table
Here is a simple script that I threw together, using previous Community entries that dealt with zip files. See if it works for you.
Names Default To Here( 1 );
directory = Pick Directory( "Select Directory that contains the Zip files" );
folders = Files In Directory( directory );
dt = New Table( "Zip Files",
New Column( "Folder Name", character ),
New Column( "File Name", character )
);
For( i = 1, i <= N Items( folders ), i++,
If( Word( -1, folders[i], "." ) == "zip",
theFolder = Open( directory || folders[i], zip );
dirList = theFolder << dir;
For( k = 1, k <= N Items( dirList ), k++,
dt << add rows( 1 );
numRows = N Rows( dt );
dt:Folder Name[numRows] = folders[i];
dt:File Name[numRows] = dirList[k];
);
)
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: go through each zip folder to get list of files name from it and save in a single table
Hi, I able to get the list of filenames. I want to add the step open file that contains specific string from each zipped folder and later concate all into one table. I modified the script as below, but it dont seems opening those files (there are totally 6000+ of it). the 6000+ files that the filename contain "rag" are ".log" type file.
is there a way I can keep append the file into the same table without having open all 6000+ files then only concate?
path ="C:\Users\Desktop\test\";
folders = Files In Directory( path );
tables={};
For( i = 1, i <= N Items( folders ), i++,
If( Word( -1, folders[i], "." ) == "zip",
theFolder = Open( path || folders[i], zip );
dirList = theFolder << dir;
For( k = 1, k <= N Items( dirList ), k++,
If (contains(dirlist[i], "rag"),
rag_file = theFolder << read(dirList[i], format(blob));
Open(path || folders[i] ||"\" || rag_file);
Insert Into(tables, data table(path || folders[i]));
);
);
);
);
dt = New Table ("all_rag_files");
dt << concatenate(tables, append to first table( 1 ), create source column);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: go through each zip folder to get list of files name from it and save in a single table
This code might get you started:
NamesDefaultToHere(1);
myFolder = PickDirectory("Pick Folder", "$DESKTOP");
zipList = FilesInDirectory(myFolder);
col1Vals = {};
col2Vals = {};
for(z=1, z<=NItems(zipList), z++,
filePath = myFolder||"/"||zipList[z];
thisZIP = Open(filePath, zip);
filesInThisZIP = thisZIP << dir;
for(f=2, f<=NItems(filesInThisZIP), f++,
if(NItems(Words(filesInThisZIP[f], "/")) == 2,
InsertInto(col1Vals, zipList[z]);
InsertInto(col2vals, filesInThisZIP[f]);
);
);
Close(thisZIP, noSave);
);
NewTable("Folder of ZIP Files",
NewColumn("Folder Name", Character, Values(col1Vals)),
NewColumn("File Name", Character, Values(col2Vals))
);