makecab - 从文件夹中的所有文件创建cab文件

tor*_*res 16 cab batch-file makecab

我在目录中有大量文件.我试过跟随makecab,但它不包括文件夹中的所有文件到cab文件中.

makecab /d "C:\Users\crtorres\Documents\- SouthPacific Project 2014\- Projects\Sales Doc Center\New Region" test.cab
Run Code Online (Sandbox Code Playgroud)

以下工作但cab文件只有清单文件.makecab manifest.xml test.cab

Nac*_*ica 28

我终于创建了一个可以正确执行此操作的脚本(使用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
}
Run Code Online (Sandbox Code Playgroud)

如果我做错了和/或可能会更好,请告诉我.

以供参考:

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

注意:Jerry Cote所做的更改,请参阅编辑说明

  • 这很漂亮,但是,用法:打开PowerShell; 将此功能粘贴到PowerShell中; 点击Enter; compress-directory.\ some-dir-to-compress.\ filename.cab (12认同)

npo*_*aka 16

/ d开关不能用于文件:

@echo off
dir /s /b /a-d >files.txt
makecab /d "CabinetName1=test.cab" /f files.txt
del /q /f files.txt
Run Code Online (Sandbox Code Playgroud)

更多信息

在这里编辑可以找到一个保留整个目录结构的脚本