2017-02-26 3 views
0

Ich sehe es in diesem BeitragVerwenden makecab einen ganzen Ordner zip

How can I compress (/ zip) and uncompress (/ unzip) files and folders with batch file without using any external tools?

zip den Ordner mit makecab eine nette Art und Weise ist. Ein Problem mit dem obigen Skript ist, dass es nicht mit langen Dateinamen umgehen kann (mit langem Erweiterungsnamen). Fox Beispiel, wenn ich eine Datei mit dem Dateinamen, somelongfilename.extension, nachdem ich zip und entpacken, wird der Dateiname SOMELO ~ 1.EXT sein. Kann mir jemand einen Weg zeigen, es zu reparieren?

+0

PS. Ich bin ein Neuling auf stackoverflow und kann keinen Kommentar zum obigen Beitrag hinzufügen. Kann mir jemand dabei helfen? – NickOSU

Antwort

0

Ich habe in letzter Zeit ähnliches getan. Aber ich benutze ein externes Tool namens DDFGenerator. Es ist kostenlos und klein und es verarbeitet lange Dateinamen richtig.

Um strukturierte Ordner und Dateien mit makecab.exe zu komprimieren, ist eine DDF-Datei ein Muss. Anstatt das Batch-Skript zu verwenden, das in der von Ihnen zitierten Antwort erwähnt wurde, habe ich DDFGenerator für dasselbe Ziel verwendet.

DDFGenerator on CodePlex

Say, der Ordner, den Sie "zip" wollen lokalisiert in C: \ MyFolder \ MyData, verwenden Sie diesen Befehl, um eine DDF-Datei namens "solution.ddf" bei C zu erzeugen: \ MyFolder:

DDFGenerator "C:\MyFolder" 

Beachten Sie, dass DDFGenerator.exe Dateien iterieren „unter“ den Ordner, den Sie, so zu komprimieren C lautet: „: \ MyFolder C“, um es und stellen Sie sicher, MyData das einzige Element ist in \ MyFolder \ MyData, sollten Sie passieren C: \ MeinFolder.

Nachdem die solution.ddf erstellt wurde, ist eine kleine Optimierung notwendig. Öffnen Sie einfach die „solution.ddf“ mit einem beliebigen Texteditor Sie bevorzugen und diese Änderungen vornehmen:

Ersetzen Sie diese zwei Zeilen (am Anfang):

.Set DiskDirectoryTemplate=CDROM 
.Set CompressionType=MSZIP 

sein:

.Set CabinetName1={YourCabName}.cab 
.Set CompressionType=LZX 
.Set CabinetFileCountThreshold=0 
.Set FolderFileCountThreshold=0 
.Set FolderSizeThreshold=0 
.Set MaxCabinetSize=0 
.Set MaxDiskFileCount=0 
.Set MaxDiskSize=0 

(Ersetzen Sie {YourCabName} nach Ihren Wünschen) Diese Änderungen gewährleisten kein Splitting und eine bessere Kompressionsrate.

Dann die makecab Befehl an C laufen: \ MyFolder die Kabine zu bauen:

makecab.exe /F solution.ddf 

Der {YourCabName} CAB unter C werden: \ MyFolder \ disk1 nach getan. Nimm es einfach und lösche andere Dateien, die erzeugt wurden.

Um die Kabine im Strompfad "entpacken", verwenden Sie den Befehl:

expand {YourCabName}.cab /F:* . 
Verwandte Themen