parcourir chaque dossier zip pour obtenir la liste des noms de fichiers et enregistrer dans une seule tableSalut,
J'ai besoin d'un peu d'aide par ici. J'ai essayé d'écrire le jsl mais je suis coincé et j'espère que quelqu'un pourra me guider ici.
J'ai un répertoire qui contient plus de 10000 dossiers zippés. Chaque dossier zippé contient plus de 100 fichiers.
Je veux faire la tâche ci-dessous sans décompresser SANS DÉCOMPRESSER les dossiers zippés.
1) obtenez le nom de chaque dossier zippé.
2) entrer dans le dossier zippé individuel.
3) récupérez les fichiers dans le dossier zippé.
4) dans un tableau, ajoutez le nom du dossier zippé dans la colonne 1 et son nom de fichier dans la colonne 2.
5) répétez les étapes 1)-4) pour le dossier zippé suivant jusqu'à ce que tout soit terminé.
Merci d'avance
Tableau de donnéesScriptRe: parcourir chaque dossier zip pour obtenir la liste des noms de fichiers et enregistrer dans une seule tableDécouvrez le tout nouveau billet de blog Uncharted IMF à partir de CSV sélectionnés dans un ZIP . Cela pourrait donner de très bonnes idées sur la façon d'aborder cela.
Scripting Index semble avoir également de la documentation sur ZipArchive :

Re: parcourir chaque dossier zip pour obtenir la liste des noms de fichiers et enregistrer dans une seule tableVoici un script simple que j'ai créé, en utilisant les entrées précédentes de la communauté qui traitaient des fichiers zip.Voyez si cela fonctionne pour vous.
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: parcourir chaque dossier zip pour obtenir la liste des noms de fichiers et enregistrer dans une seule tableCe code peut vous aider à démarrer :
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: parcourir chaque dossier zip pour obtenir la liste des noms de fichiers et enregistrer dans une seule tableSalut, j'ai pu obtenir la liste des noms de fichiers. Je souhaite ajouter le fichier d'ouverture d'étape qui contient une chaîne spécifique de chaque dossier zippé, puis concaténer le tout dans un seul tableau. J'ai modifié le script comme ci-dessous, mais il ne semble pas ouvrir ces fichiers (il y en a au total plus de 6000). les 6000+ fichiers dont le nom de fichier contient "rag" sont des fichiers de type ".log".
y a-t-il un moyen de continuer à ajouter le fichier dans la même table sans avoir ouvert tous les 6000+ fichiers, puis concaté uniquement ?
chemin ="C:\Users\Desktop\test\" ;
dossiers = Fichiers dans le répertoire ( chemin );
tableaux={} ;
Pour( i = 1, i <= N éléments( dossiers ), i++,
Si( Word( -1, dossiers[i], "." ) == "zip",
theFolder = Open( chemin || dossiers[i], zip );
dirList = leDossier << dir;
Pour( k = 1, k <= N éléments( dirList ), k++,
Si (contient(dirlist[i], "chiffon"),
rag_file = theFolder << read(dirList[i], format(blob));
Open(chemin || dossiers[i] ||"\" || rag_file);
Insérer dans (tables, table de données (chemin || dossiers[i]));
);
);
);
);
dt = Nouvelle table ("all_rag_files");
dt << concaténer (tables, ajouter à la première table ( 1 ), créer la colonne source);