问题
I have bunch of files in a directory. I tried following makecab but it does not include all the files in a folder into the cab file.
makecab /d "C:\Users\crtorres\Documents\- SouthPacific Project 2014\- Projects\Sales Doc Center\New Region" test.cab
The following works but the cab file only has the manifest file. makecab manifest.xml test.cab
回答1:
I've finally created a script that can actually do this properly (with powershell)
It doesn't use WSPBuilder as I'm often contracted out and it's inconvenient to download new software/extra files. This works 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
}
please let me know if i'm doing something wrong and/or could be better.
for reference:
http://www.pseale.com/blog/StrongOpinionSayNoToMAKECABEXE.aspx
NOTE: Change made by Jerry Cote, see edit notes
回答2:
/d switch cannot be used for files:
@echo off
dir /s /b /a-d >files.txt
makecab /d "CabinetName1=test.cab" /f files.txt
del /q /f files.txt
More info
EDIT here can be found a script that preserves the whole directory structure
来源:https://stackoverflow.com/questions/19411440/makecab-create-a-cab-file-from-all-the-files-in-a-folder