23

ディレクトリにたくさんのファイルがあります。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

4

2 に答える 2

33

これを実際に適切に実行できるスクリプトを最終的に作成しました(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 による変更、編集メモを参照

于 2014-07-10T05:17:34.783 に答える
19

/d スイッチはファイルには使用できません:

@echo off
dir /s /b /a-d >files.txt
makecab /d "CabinetName1=test.cab" /f files.txt
del /q /f files.txt

より詳しい情報

ここで編集すると、ディレクトリ構造全体を保持するスクリプトが見つかります

于 2013-11-07T14:04:15.673 に答える