Gehen Sie jeden Zip-Ordner durch, um eine Liste der Dateinamen daraus zu erhalten und in einer einzigen Tabelle zu speichernHi,
Ich brauche hier etwas Hilfe. Ich habe versucht, die JSL zu schreiben, aber ich bin stecken geblieben und hoffe, dass mich jemand hierher führen kann.
Ich habe ein Verzeichnis, das über 10000 gezippte Ordner enthält. Jeder gezippte Ordner enthält über 100 Dateien.
Ich möchte die folgende Aufgabe ausführen, ohne die gezippten Ordner zu entpacken OHNE UNZIP.
1) Rufen Sie den Namen jedes gezippten Ordners ab.
2) in einzelne ZIP-Ordner gelangen.
3) Holen Sie sich die Dateien in den gezippten Ordner.
4) Fügen Sie in einer Tabelle den Namen des komprimierten Ordners in Spalte 1 und den Dateinamen in Spalte 2 hinzu.
5) Wiederholen Sie Schritt 1)-4) für den nächsten gezippten Ordner, bis alles fertig ist.
Danke im Voraus
DatentabelleSkriptingRe: Gehen Sie jeden Zip-Ordner durch, um eine Liste der Dateinamen daraus zu erhalten und in einer einzigen Tabelle zu speichernSchaut euch den ziemlich neuen Uncharted-Blogpost an MFI von ausgewählten CSVs in einer ZIP . Es könnte einige ziemlich gute Ideen geben, wie man das angeht.
Scripting Index scheint auch eine Dokumentation zu ZipArchive zu haben:

Re: Gehen Sie jeden Zip-Ordner durch, um eine Liste der Dateinamen daraus zu erhalten und in einer einzigen Tabelle zu speichernHier ist ein einfaches Skript, das ich unter Verwendung früherer Community-Einträge zusammengestellt habe, die sich mit Zip-Dateien befassten.Sehen Sie, ob es für Sie funktioniert.
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];
);
)
);
Re: Gehen Sie jeden Zip-Ordner durch, um eine Liste der Dateinamen daraus zu erhalten und in einer einzigen Tabelle zu speichernDieser Code könnte Ihnen den Einstieg erleichtern:
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))
);Re: Gehen Sie jeden Zip-Ordner durch, um eine Liste der Dateinamen daraus zu erhalten und in einer einzigen Tabelle zu speichernHallo, ich kann die Liste der Dateinamen abrufen. Ich möchte den Schritt zum Öffnen der Datei hinzufügen, der eine bestimmte Zeichenfolge aus jedem gezippten Ordner enthält, und später alle in einer Tabelle verketten. Ich habe das Skript wie folgt modifiziert, aber es scheint, als würde es diese Dateien nicht öffnen (es gibt insgesamt mehr als 6000 davon). die über 6000 Dateien, deren Dateiname "rag" enthält, sind Dateien vom Typ ".log".
Gibt es eine Möglichkeit, die Datei weiterhin an dieselbe Tabelle anzuhängen, ohne alle über 6000 Dateien geöffnet zu haben und dann nur zu verketten?
Pfad ="C:\Benutzer\Desktop\test\";
Ordner = Dateien im Verzeichnis (Pfad);
Tabellen={};
For( i = 1, i <= N Items( folders ), i++,
If( Word( -1, Ordner[i], "." ) == "zip",
theFolder = Open( path || folders[i], zip );
dirList = theFolder << dir;
For( k = 1, k <= N Items( dirList ), k++,
Wenn (enthält(dirlist[i], "rag"),
rag_file = theFolder << read(dirList[i], format(blob));
Open(Pfad || Ordner[i] ||"\" || rag_file);
Einfügen in(Tabellen, Datentabelle(Pfad || Ordner[i]));
);
);
);
);
dt = Neue Tabelle ("all_rag_files");
dt << verketten (Tabellen, an erste Tabelle anhängen ( 1 ), Quellspalte erstellen);