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

前端 未结 2 661
你的背包
你的背包 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

    0 讨论(0)
  • 2020-12-24 08:13

    /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

    0 讨论(0)
提交回复
热议问题