2013-10-16 10 views

Antwort

12

/d nicht für Dateien verwendet werden können:

@echo off 
dir /s /b /a-d >files.txt 
makecab /d "CabinetName1=test.cab" /f files.txt 
del /q /f files.txt 

More info

EDIThere können ein Skript gefunden werden, die die gesamte Verzeichnisstruktur bewahrt

+0

In einigen Fällen Dateipfad und Namen "files.txt" auf "files.txt" hinzugefügt sowie. Dann wird files.txt auch in der test.cab sein. – Hinek

22

Ich habe endlich ein Skript erstellt, das kann dies richtig tun (mit Powershell)

Es verwendet WSPBuilder nicht, da ich oft ausgeliehen bin und es ungünstig ist, neue Software/zusätzliche Dateien herunterzuladen. Dies funktioniert OOTB.

function compress-directory([string]$dir, [string]$output) 
{ 
    $ddf = ".OPTION EXPLICIT 
.Set CabinetNameTemplate=$output 
.Set DiskDirectory1=. 
.Set CompressionType=MSZIP 
.Set Cabinet=on 
.Set Compress=on 
.Set CabinetFileCountThreshold=0 
.Set FolderFileCountThreshold=0 
.Set FolderSizeThreshold=0 
.Set MaxCabinetSize=0 
.Set MaxDiskFileCount=0 
.Set MaxDiskSize=0 
" 
    $dirfullname = (get-item $dir).fullname 
    $ddfpath = ($env:TEMP+"\temp.ddf") 
    $ddf += (ls -recurse $dir | ? {!$_.psiscontainer}|select -expand fullname|%{'"'+$_+'" "'+$_.SubString($dirfullname.length+1)+'"'}) -join "`r`n" 
    $ddf 
    $ddf | Out-File -encoding UTF8 $ddfpath 
    makecab /F $ddfpath 
    rm $ddfpath 
    rm setup.inf 
    rm setup.rpt 
} 

Bitte lassen Sie mich wissen, wenn ich etwas falsch mache und/oder könnte besser sein.

Referenz:

http://www.pseale.com/blog/StrongOpinionSayNoToMAKECABEXE.aspx

+7

Dies ist schön, aber, Verwendung: Open PowerShell; Fügen Sie diese Funktion in PowerShell ein; Drücken Sie Enter; compress-directory. \ Some-dir-to-compress. \ Filename.cab – turiyag

+1

Nur einige Probleme bei der Verwendung sollten beachtet werden, wenn jemand über diesen älteren Beitrag läuft. Ziel nimmt keinen literalen Pfad an. Sie können einen Speicherort als Workaround verschieben. Der Befehl würde ungefähr wie "compress-directory c: \ temp. \ temp.cab" aussehen.
Außerdem haben cab-Dateien Probleme, wenn sie über 2 Gigabyte - 512 Bytes gehen. Als zusätzliche Option kann der Kompressionstyp LZX als Alternative eingestellt werden. – Lorek