Hallo Community.
Ich wollte fragen ob und wie es möglich ist ein WinRar ähnliches Programm erstellen.
Mit dem Programm Dateien in einer Datei speichern, diese Datei per Doppelklick öffnen und dann im Programm die Dateien in der Datei verwalten (entpacken, umbenennen)
Ich will nur wissen ob es möglich ist und wie man die Dateien in einer Datei speichert.
Danke für möglichen Antworten.
WinRar ähnliches Programm in AutoIt erstellen.
-
- [ offen ]
-
GE IXI TIM -
28. September 2009 um 16:04 -
Geschlossen -
Erledigt
-
-
hey!
hab mir sowas auch schon ma überlegt, mir dann aba gesagt das ich dafür zu faul bin
[autoit]
hatte überlegt die datei(en) mit
[/autoit]
$file = FileOpen($path, 16) ; --> 16 = binäres Auslesen
FileRead($file, FileGetSize($path)) ;--> gesamten Dateiinhalt auslesen
FileClose($file)auszulesen un dann in ne txt oda en andres Format zu schreibn.. so könnte man dann mehrere Dateien mit geeigneten Trennzeichen dazwischen hintereinander hängen..
aba ka wie effizient das is (wahrscheinlich sehr wenig xD ) un auch ka wie WinRar das macht..
vll wissn andere leute mehr:Pgreetz syne
-
ich versuchs mal
danke^^ -
- Offizieller Beitrag
-
ähm...wie hilft mir dass jetzt bei AutoIt weiter?^^
-
- Offizieller Beitrag
Du hast gefragt, wie WinRar funktioniert ;).
Dateien zusammenhängen kann jedes sinnvolle Betriebssystem selbst. Bei Windows hat copy einen Schalte, iirc "/b".Johannes
-
Stichwort LMZA http://de.wikipedia.org/wiki/Lempel-Ziv-Markow-Algorithmus
Ich will dir ja jetzt nicht zu nahe treten aber wie alt/bzw. in welche Klasse gehst du?
Prinzipiell wäre es denke ich möglich, jedoch wäre AutoIt beim Komprimieren wohl langsamer als so manch andere Sprache.
Davon abgesehen ist die Datenkompression eine schwierige Angelegenheit da man viel Wissen der Mathematik und der verschiedenen Betriebssysteme bzw. Dateisystemen haben sollte.Natürlich möchte ich dich nicht davon abhalten oder so aber so etwas ist schon ein Mammutprojekt
Für was bräuchtest du es denn? Ich könnte dir auch mal 7-Zip empfehlen man kann mit 7-Zip sehr gut per Commandline arbeiten.
-
um das komprimieren selbst geht es mir nicht.
Ich möchte nur ungefähr dieselbe Oberfläche wie WinRar haben.
Programm öffnen, Dateien hinzufügen, alle Dateien in eine schreiben.
Doppelklick auf diese Datei, Programm öffnet sich, Datei wird per CMDLINE ausgelesen, Name in einer Listview des Programmes angezeigt und man kann dann die einzelnen Dateien (oder auch alle) wieder aus der Datei herausholen. (Komprimieren ist nicht nötig, wollte nur wissen ob das möglich wäre^^)
Also wie WinRar nur ohne kompri. weil das ist mir dann doch wirklich zu schwer...^^
Ginge das Irgendwie? z.B. die Dateien per trennzeichen Trennen und die 1. Zeile der einzelnen Programme beinhaltet Dateityp, Name und andere Infos...
Aber danke für die Antworten -
[Blockierte Grafik: http://www.bilder-space.de/upload/28.09vWwaQhiALdGixRW.JPG]
Ich arbeite gerade an fast den gleichen projekt wie du vorhast wie ich das mit bekomme.
-
könnte gut sein^^
kannst du mir vielleicht ein paar Tipps geben wie man die einzelnen Dateien zu einer einzigen schreibt?
Danke -
Nur so zum Spass...
aber warum wollt ihr alle das Rad neu und langsamer erfinden??..
ich sag nur 7z...MFg chris
-
ich habe ja nicht gesagt das ich das rad neu erfinde aber mir persönlich gefählt, Winrar ja nur mir geht die 30 Tagesversion langsam auf den Sack und Cracken oder so möchte ich nicht immer umbedingt.
Und ausserdem kann mann ja auch durch sowas nur lernen sag ich mir wenn man es selber mal probiert oder ? -
das denk ich auch!
ich bin nicht so der AutoIt experte und versuche mich an allem möglichem um viele verschiedene Bereiche kennen zu lernen. Und so ein Programm wäre doch ein lustiger Versuch
nur komm ich immer noch nicht genau weiter
Geht es, wenn man die Dateien mit fileopen(iwas, 16), also binär liest, mit trennzeichen und informationen in einer Datei speichert, und diese so ähnlich auch wieder speichert?! -
$sDBFile = FileOpenDialog('Dateiauswahl',"",'Alle Datein(*.*)|Zip-Datein(*.zip)|Rar-Datein(*.rar)')
dann musst du mit den IniWrite und IniRead arbeiten um erstmal dir eine ini zumachen wo er das zwischenspeichert wenn ich dich jetzt so verstanden habe -
ich probier mal alles durch...
-
Hallo Sirocool,
ich glaube du hast die Frage von GE IXI TIM nicht richtig verstanden. Ihm ging es nicht um den FileOpen bzw. FileSave-Dialog sondern um das speichern und wieder auslesen mehrer Dateien in einer einzigen.
GE IXI TIM, meines Wissens nach hat funkey so etwas schon einmal gemacht um mehrere Resourcen-Dateien (BMP, ICO etc.) in einer Datei zu speichern.
Falls ihr mit Datenkomprimierung arbeiten wollt, schaut euch mal diesen Post auf AutoItScript.com an, dort findet ihr Folgelinks.
Ich selbst habe _LZNTCompress zusammen mit SQLite getestet.mfg (Auto)Bert
-
Ist das so möglich?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$path = "Irgendeinpfad.iwas" ; den Pfad der 1. Datei deklarieren
$file = FileOpen($path, 16) ; die Datei im Binärmodus öffnen
$binary = FileRead($file) ; die Datei auslesen$path2 = "Irgendeinandererpfad.iwas" ;2. datei
[/autoit] [autoit][/autoit] [autoit]
$file2 = FileOpen($path2, 16) ;öffnen
$binary2 = FileRead($file2) ; auslesen$dest = @DesktopDir &"/test.iwas" ;zielpfad angeben
[/autoit]
$save = FileOpen($dest, 16) ;Pfad im Binärmodus öffnen um die Datei original zu speichern
FileWrite($save, $binary & "|" & $binary2) ;datei aus den anderen erstellen -
- Offizieller Beitrag
Von der Überlegung her, denke ich, dass du durchaus verschiedene Dateien 'zusammenklöppeln' kannst. Allerdings würde ich dieses:
$binary & "|" & $binary2
weglassen.
Du mußt die Dateien, um sie ausführen zu können, sowieso wieder aus der Summendatei extrahieren. Also mußt du zusätzlich die Anfangs- und Endpositionen deiner integrierten Files in der Gesamtdatei abspeichern.
Wie gesagt: ungetestet, nur gedacht. -
- Offizieller Beitrag
Nein!
Da fehlen zum einen die FileClose (aber das nur am Rande), zum anderen musst Du beim speichern den Parameter "2" benutzen, also "16 + 2" oder halt "18" und (was das wichtigste ist) Du darfst kein Trennzeichen verwenden, weil das ja auch in den Dateien vorkommen könnte. Stattdessen musst Du einen Dateiheader anlegen, indem Du die Dateilänge der einzelnen Dateien ablegst.Edit: BugFix war mal wieder schneller.
-
muss ich schon wieder umdenken^^
danke für die aufschlussreiche Hilfe -