makecab - create a cab file from all the files in a folder

前端 未结 2 807
你的背包
你的背包 2020-12-24 07:40

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\\         


        
2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-24 08:12

    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

提交回复
热议问题