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
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
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
[~ # ~] edit [~ # ~] ici peut être trouvé un script qui préserve la structure entière du répertoire