我在目录中有大量文件。我试过跟随makecab,但它没有将文件夹中的所有文件都包含在cab文件中。
makecab /d "C:\Users\crtorres\Documents\- SouthPacific Project 2014\- Projects\Sales Doc Center\New Region" test.cab
以下工作但cab文件只有清单文件。 makecab manifest.xml test.cab
答案 0 :(得分:27)
我终于创建了一个可以正确执行此操作的脚本(使用powershell)
它没有使用WSPBuilder,因为我经常外包并且下载新软件/额外文件不方便。这适用于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
}
如果我做错了和/或可能更好,请告诉我。
供参考:
http://www.pseale.com/blog/StrongOpinionSayNoToMAKECABEXE.aspx
注意:Jerry Cote所做的更改,请参阅编辑说明
答案 1 :(得分:15)