So entpacken Sie es mit JMP Zip Archive-BefehlenIn einer früheren Frage, die ich gestellt habe, habe ich gefragt, ob es möglich sei, Dateien zu entpacken.Ich habe einen Blog gelesen ( Verwenden von FILENAME ZIP zum Entpacken und Lesen von Datendateien in SAS – dem SAS-Dummy ), aber im Moment fällt es mir schwer, ihm mit JSL zu folgen.
Ich habe einen Ordner mit 150 gezippten Ordnern.Jeder Ordner hat einen Gerätenamen, gefolgt von einem Bestellwert und dann dem Datum (z. B. Gerät X_2016_07_20.zip).Ich möchte einen neuen Ordner mit dem Gerätenamen erstellen (den ich zum Laufen bringen kann).Ich kann einen ZIP-Ordner öffnen und alle darin enthaltenen Dateien sehen, aber ich weiß nicht, wie ich sie entpacken (oder sogar in den neuen Ordner kopieren) kann.Kann mir bitte jemand helfen?
Folgendes habe ich bisher:
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
;
);
Betreff: So entpacken Sie es mit JMP Zip Archive-BefehlenIch folge dem obigen Beispielcode, erhalte jedoch leere Daten, wenn ich versuche, den Inhalt der ZIP-Datei zu lesen.
Beispielsweise wurde Datei1.csv in Datei1.zip komprimiert, und ich versuche, Datei1.csv aus Datei1.zip zu lesen
Würden Sie mir bitte zeigen, was in meinem Code falsch ist?
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);
Betreff: So entpacken Sie es mit JMP Zip Archive-Befehlen<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Willkommen/Danke und ein später Nachtrag: Komprimierte Daten laden könnte auch hilfreich sein.
Betreff: So entpacken Sie es mit JMP Zip Archive-BefehlenVielen Dank!Ich habe es definitiv zu kompliziert gemacht.Auch eine hervorragende Erklärung.
Betreff: So entpacken Sie es mit JMP Zip Archive-BefehlenDie nächste Zeile verwendet das Zip-Archivobjekt za, um ein Mitglied aus dem Archiv zu lesen.etwas wie das:
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 );
);
);
Es gibt zwei fett gedruckte Beispiele, da eine ZIP-Datei Binärdaten (in diesem Fall eine JMP-Datentabelle) oder einfachen Text (ein JMP-Skript) enthalten kann.Die Binärdaten können nicht in einem JSL-String gespeichert werden, aber ein BLOB funktioniert.Die nächste Zeile, saveTextFile, versteht sowohl Zeichenfolgen als auch BLOBs (und speichert eine Binärdatei für ein BLOB, unabhängig von dessen Namen).Sie sollten sich nicht auf die Reihenfolge der Mitglieder in der ZIP-Datei verlassen, insbesondere wenn jemand möglicherweise Mitglieder daraus bearbeitet/hinzugefügt/gelöscht hat.
(Ich gehe davon aus, dass Sie die Mitglieder extrahieren und nicht die ZIP-Datei in eine andere ZIP-Datei kopieren möchten.Sie könnten dies tun, ohne die ZIP-Datei überhaupt zu öffnen.)
Bearbeiten: Sie können BLOB auch für Textdateien verwenden, wenn Sie diese nur kopieren.Wenn Sie den Text in JSL verarbeiten möchten, wird BLOB es schwieriger machen.
Betreff: So entpacken Sie mithilfe der JMP Zip Archive-Befehleum die entsprechenden Einträge zu erhalten, muss man als Index i verwenden, also z.B. dirlist[i] statt dirlist
dann funktioniert der Code von oben super.
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 ) );
);
Weiter: So entpacken Sie mit JMP Zip Archive-BefehlenRP = Run Program( Executable( "C:\Program Files\WinRAR\WinRAR.exe" ), Options( {"e -or C:\1\abc.7z C:\2"} ) );