・Windows 11でCabファイルを作成したい人
・他社製ソフトを使用せずにCabファイルを作りたい人
Windowsの標準コマンドであるmakecabコマンドを使っていきます.しかし,以下のmakecabの使用方法を見てましたがやり方がいまいち分かりませんでした.単体のファイルなどは簡単にcab化できたのですが,ファイル構成を持った複数のファイルをcab化は簡単にできなさそうでした.そのため,ファイル構成を持ったファイル類をcabにする方法について調べてみたので紹介していきます.

また、今回はWindows PE上でCabファイルを作成します。Windows PEのデフォルト環境にはmakecab.exeが存在していません。Windows 10もしくはWindows 11がインストールされたパソコンにおいてあるmakecab.exeを使用してください。
もしもCabファイルの展開方法を知りたい方は以下を参照してください.
Cabファイルとは
CabファイルとはWindowsで使用されるデータ圧縮フォーマットのひとつです.
キャビネットは、圧縮されたファイルをファイル ライブラリに格納する単一のファイル.cab拡張子を持つ 1 つのファイルです。 キャビネット形式は、ファイル境界を越えて圧縮が実行され、圧縮率が大幅に向上するために、複数のファイルをパッケージ化する効率的な方法です。
https://docs.microsoft.com/ja-jp/windows/win32/msi/cabinet-files
Cabファイルの作成
cabファイルを生成するためにmakecabコマンドを使いますが,フォルダ構成を維持するためには /f オプションでddfファイルを指定する必要があります.
ddfファイルを生成してmakecabコマンドでcabファイルを生成するバッチファイルを作成しました.今回はmakecab.batとします.
@echo off
if %1=="" (
echo 引数がありません
echo makecab.bat [Cabファイルを作成したいパス]
exit /b
)
set BEFORE_STRING=%1\
set AFTER_STRING=
setlocal enabledelayedexpansion
echo .Set DestinationDir= > cab.ddf
for %%f in (%1\*) do (
echo "%%f" >> cab.ddf
)
for /d /r %1 %%d in (*) do (
set line=%%d
echo line !line!
echo before !BEFORE_STRING!
echo after !AFTER_STRING!
echo .Set DestinationDir="!line:%BEFORE_STRING%=%AFTER_STRING%!" >> cab.ddf
for %%f in ("%%d\*") do (
echo "%%f" >> cab.ddf
)
)
makecab.exe /f cab.ddf
move /Y disk1\1.cab .\
if exist disk1 rd disk1
if exist cab.ddf del /F cab.ddf
if exist setup.inf del /F setup.inf
if exist setup.rpt del /F setup.rpt
上記バッチファイルを下記のようにcabファイルを作成したいパスを引数として渡します.
makecab.bat [cabファイルを作成したいフォルダパス]

1.cabという名前でファイルが出来上がります.
コメント