Comment décompresser à l'aide des commandes d'archive JMP ZipDans une question précédente que j'ai posée, j'ai demandé s'il était possible de décompresser des fichiers.J'ai lu un blog ( Utilisation de FILENAME ZIP pour décompresser et lire des fichiers de données dans SAS - The SAS Dummy ), mais pour le moment j'ai du mal à le suivre en utilisant JSL.
J'ai un dossier contenant 150 dossiers compressés.Chaque dossier a un nom d'appareil, suivi d'un score de commande, puis de la date (c'est-à-dire Appareil X_2016_07_20.zip).Je souhaite créer un nouveau dossier avec le nom de l'appareil (sur lequel je peux travailler).Je peux ouvrir un dossier zip et voir tous les différents fichiers qu'il contient, mais je n'arrive pas à comprendre comment décompresser (ou même copier) dans le nouveau dossier.Quelqu'un peut-il me donner un coup de main ?
Voici ce que j'ai jusqu'à présent :
directory = Pick Directory();
filesInDirectory = Files In Directory( directory );
nFiles = N Items( filesInDirectory ); //get number of zip files in directory
For( i = 1, i <= nFiles, i++,
fileName = filesInDirectory;
pos = Contains( fileName, "_" );
deviceName = Left( fileName, pos - 1 ); //get the device name
subDir = directory || deviceName;
//Create Directory(subDir); //eventually create a new sub directory
za = Open( directory || fileName, zip );
dirlist = za << dir;
Show( dirlist ) // see all contents of zipped folder
;
);
Re : Comment décompresser à l'aide des commandes d'archive JMP ZipJe suis l'exemple de code ci-dessus, mais j'obtiens des données vides lorsque j'essaie de lire le contenu du fichier zip.
Par exemple, file1.csv compressé dans file1.zip et j'essaie de lire file1.csv à partir de file1.zip
Pourriez-vous s'il vous plaît m'indiquer ce qui ne va pas dans mon code ?
za = Open( unzip_file_list[1], zip);
dirlist = za << dir;
// below line correctly giving me file1.csv
show(dirlist);
// below two lines correctly gives me full file path.
full_path = directory || dirlist[1];
show(full_path);
// below line returns "Empty()" in log windows.
txt = za << read( full_path);
Re : Comment décompresser à l'aide des commandes d'archive JMP Zip<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bienvenue/merci, et un suivi tardif : Charger des données compressées pourrait être utile aussi.
Re : Comment décompresser à l'aide des commandes d'archive JMP ZipMerci beaucoup!J'étais définitivement en train de trop compliquer les choses.Excellente explication également.
Re : Comment décompresser à l'aide des commandes d'archive JMP Zipla ligne suivante utilise l'objet d'archive zip, za, pour lire un membre de l'archive.quelque chose comme ça:
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
Show( dirlist ); // see all contents of zipped folder
// dirlist = {"fft.jmp", "fft2.jsl"};
For( i = 1, i <= N Items( dirlist ), i++,
If( Right( dirlist, 4 ) == ".jmp" /*binary data*/,
blob = za << read( dirlist, Format( blob ) );
Save Text File( "$desktop\deleteme_" || dirlist, blob );
);
If( Right( dirlist, 4 ) == ".jsl" /*text data*/,
text = za << read( dirlist );
Save Text File( "$desktop\deleteme_" || dirlist, text );
);
);
il existe deux exemples, en gras, car un fichier zip peut contenir des données binaires (une table de données JMP dans ce cas) ou du texte brut (un script JMP).Les données binaires ne peuvent pas être stockées dans une chaîne JSL, mais un BLOB fonctionnera.La ligne suivante, saveTextFile, comprend à la fois les chaînes et les BLOB (et enregistrera un fichier binaire pour un BLOB, quel que soit son nom).Vous ne devez pas dépendre de l'ordre des membres dans le fichier zip, surtout si quelqu'un a pu modifier/ajouter/supprimer des membres.
(Je suppose que vous souhaitez extraire les membres, pas copier le fichier .zip dans un autre fichier .zip.Vous pouvez le faire sans ouvrir le fichier zip.)
modifier : vous pouvez également utiliser BLOB pour les fichiers texte, si vous les copiez simplement.Si vous souhaitez traiter le texte en JSL, BLOB rendra la tâche plus difficile.
Re : Comment décompresser à l'aide des commandes d'archive JMP Zippour obtenir les entrées respectives, vous devez utiliser i comme index, par exemple dirlist[i] au lieu de dirlist
alors le code ci-dessus fonctionne très bien.
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
For( i = 1, i <= N Items( dirlist ), i++,
blob = za << read( <FONT color="#339966"><STRONG>dirlist[i]</STRONG></FONT>, Format( blob ) );
);
回复: Comment décompresser à l'aide des commandes d'archive JMP ZipRP = Run Program( Executable( "C:\Program Files\WinRAR\WinRAR.exe" ), Options( {"e -or C:\1\abc.7z C:\2"} ) );