C(++,Cli)-Library für die dekompression von Archiven?
-
Ich habe hier z.B. mehrere .tgz Archive, die jeweils mehrere .rar oder .zip Archive enthalten. Ich will jetzt eben alle Archive entpacken (also erst die .tgz und dann die .rar bzw. .zip) und die darin enthaltenen Dateien/Ordner in "neue" Ordner sortieren.
Also, die genaue Frage ist: Kennt jemand (kostenlose) Libraries für C++ (C++/Cli geht auch), um .tgz, .zip und .rar zu entpacken? Besonders bei .tgz hat google keine keine Ergebnisse gebracht...
-
naja .tgz ist ein tar in einem gzip. gzip gibt's ne lib, und tar glaube ich auch. knote beide zusammen, und du hast deinen .tgz entpacker.
-
Für sowas popliges willst du ein Programm schreiben? Also Entpacken geht auf der Kommandozeile, dann ein kleines leichtes Programm schreiben das das Sortieren übernimmt und alles nacheinander ausführen. Spart dir tonnenweise Arbeit.
-
Thx @ hustbaer
Naja, es nicht direkt nur für mich. Genauer gesagt, gibt es bei meinem Clan ut2k4-gaming.de map-packs, die so aufgebaut sind. Da es doch relativ viele sind, wollte ich eben ein Programm schreiben, dass diese automatisch entpackt und die enthaltenen Dateien jeweils richtig einsortiert.
Btw, ich benutzte Windows.
-
Und das willst du mit C++ machen?
Hmmm... Egal.Kannst du aber trotzdem mit einem externen Tool entpacken, man kann ja mit C++ schliesslich auch externe Prozesse starten.
Die nötigen Commandline-Tools legst du dann einfach zusammen mit deinem Programm in ein Verzeichnis. Dann muss man auch nix installieren oder konfigurieren, sondern bloss das Verzeichnis kopieren wenn man das Programm verwenden will.
-
Für sowas reicht doch ein BATCH / SHELL-Skript!
-
tar: http://www.feep.net/libtar/
gzip: http://www.zlib.net/
Das waren nur die ersten Google-Treffer...
-
zlib habe ich bereits gefunden, für .rar die auf http://www.rarlab.com/rar_add.htm angebotene library (denke, die geht, habs noch nicht getestet).
Für Tar hatte ich nichts gefunden xD Thx aufjedenfall---
Ich wollte C++ (bzw. Cli) benutzten, weil ich noch in keiner anderen Sprache etwas gemacht habe
---
Also, um genauer den Fall zu beschreiben: Man downloaded von der Website die Mappacks, welche als .tgz Archiv gespeichert sind. In diesem Archiv sind dann .zip bzw. .rar Archive, die dann die jweiligen Maps (inklusive benötigte Dateien) mehr oder weniger geordnet enthalten. Insgesamt sind es >800 maps.
Die Dateien sollten dann entsprechend ihrer Endung sortiert werden (z.B. .utx in den Textures Ordner, .u in System, ...). Doppelt vorhandene Dateien sollten automatisch überschrieben werden (evtl. sollte es aber dem User mitgeteilt werden).Das geht mit BATCH Dateien? (Auch noch nicht viel mit gemacht
)
Ich "geh" mich mal informieren^^ Thx
-
Das geht mit BATCH Dateien?
Mit Batchfiles geht erstmal gar nichts. Die machen nichts als Programme via Command-Line aufrufen. Also müßten Programme für tar und gzip Files vorhanden sein (auf Unix-Kisten heißen die üblicherweise tar und gunzip). Dann bräuchtest du scheinbar auch noch Programme, die ohne GUI mit rar und zip klarkommen. Wird wohl alles auch für Windows zu beschaffen sein.
Der Windows-CLI ist übrigens nicht sonderlich leistungsfähig -- vielleicht möchtest du bei der Gelegenheit auf eine Shell aus der Unix-Welt oder auf eine einfache Scriptsprache umsatteln.
EDIT: Oder auf die Windows PowerShell, die ist angeblich besser als der eingebaute CLI.
-
Erm,... Windows-CLI? Ich meinte die für .NET abgewandelete C++ Sprache C++/CLI^^
Aufjedenfall habe ich es per Batch datei hingekriegt. Thx
Eine Frage noch zur Batch-Datei: Ich habe folgende Zeile, um eine Nachricht auszugeben:echo 7-Zip commandline tool (7za.exe) not found. Can't decompress files.
Hier kommt immer die Fehlermeldung:
"not" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Wenn ich die Nachricht in "" einschließe, geht es, aber die "" erscheinen auch in der Nachricht. Wie kann ich das ändern?
----------
Für die, die es interessiert, wie die Batch Datei aussieht:Ich benutzt zum entpacken der .tgz und .zip Dateien die commandline Version von 7-Zip (http://www.7-zip.org/download.html) und für die .RAR Dateien UnRAR (http://www.rarlab.com/rar_add.htm).
Das eigentliche entpacken wird mit den Befehlen
MD Temp FOR /R %%C IN (*.tgz) DO ( 7za e -oTemp "%%C" ) FOR /R %%C IN (Temp\*.tar) DO ( 7za e -oTemp "%%C" ) FOR /R %%C IN (Temp\*.zip) DO ( 7za e -oTemp -y "%%C" ) FOR /R %%C IN (Temp\*.rar) DO ( unrar e -o+ "%%C" Temp\ )
erledigt und die verschiedenen Dateien (.utx, .u, .ucl, etc.) per "move" in einen anderen Ordner kopiert (die entpackten Dateien befinden sich alle direkt (!) im Temp Ordner). Klappt hervorragend
-
Gugi schrieb:
echo 7-Zip commandline tool (7za.exe) not found. Can't decompress files.
Hier kommt immer die Fehlermeldung...
Probier mal
echo.7-Zip commandline tool (7za.exe) not found. Can't decompress files.
-
Siehst du, man braucht nicht für alles C++. Für kleinere Dinge lohnt es sich oft nur Skripte einzusetzen.
-
-
Komisch. Bei mir geht es mit oder ohne "."
-
Der komplette Abschnitt:
IF NOT EXIST 7za.exe ( echo. echo ------ echo "7-Zip commandline tool (7za.exe) not found. Can't decompress files." echo ------ echo. GOTO END )
Ist aber eigentlich egal, auf die überzähligen "" kann ich leicht hinwegsehen^^
Thx für die vielen Tipps
-
Innerhalb der () eines "if" gelten andere Regeln.
Wenn du es statt () mit "if exist goto blubb" machst, sollte es keine Probleme geben.
QuasiIF EXIST 7za.exe GOTO sevenzip_found echo. echo.------ echo.7-Zip commandline tool (7za.exe) not found. Can't decompress files. echo.------ echo. GOTO END :sevenzip_found
-
Ah, k, danke
-
Erm,... Windows-CLI? Ich meinte die für .NET abgewandelete C++ Sprache C++/CLI^^
Sorry for that, ich meinte CLI = Command Line Interpreter, und hatte diese Bedeutung vorraus gesetzt.