web-dev-qa-db-fra.com

makecab - crée un fichier cab à partir de tous les fichiers d'un dossier

J'ai un tas de fichiers dans un répertoire. J'ai essayé de suivre makecab mais il n'inclut pas tous les fichiers d'un dossier dans le fichier cab.

makecab /d "C:\Users\crtorres\Documents\- SouthPacific Project 2014\- Projects\Sales Doc Center\New Region" test.cab

Cela fonctionne mais le fichier cab n'a que le fichier manifeste. makecab manifest.xml test.cab

16
torres

J'ai finalement créé un script qui peut réellement le faire correctement (avec PowerShell)

Il n'utilise pas WSPBuilder car je suis souvent sous-traité et il n'est pas pratique de télécharger de nouveaux logiciels/fichiers supplémentaires. Cela fonctionne 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 | where { !$_.PSIsContainer } | select -ExpandProperty FullName | foreach { '"' + $_ + '" "' + ($_ | Split-Path -Leaf) + '"' }) -join "`r`n"
    $ddf
    $ddf | Out-File -Encoding UTF8 $ddfpath
    makecab.exe /F $ddfpath
    rm $ddfpath
    rm setup.inf
    rm setup.rpt
}

s'il vous plaît laissez-moi savoir si je fais quelque chose de mal et/ou pourrait être mieux.

pour référence:

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

REMARQUE: modification apportée par Jerry Cote, voir les notes de modification

28
Nacht

Le commutateur/d ne peut pas être utilisé pour les fichiers:

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

Plus d'informations

[~ # ~] edit [~ # ~] ici peut être trouvé un script qui préserve la structure entière du répertoire

16
npocmaka