【Windows PE】他社製ソフトを使用せずCabファイルを作成する方法

Windows 11で他社製ソフトを使用せずCabファイルを作成する方法 Windows
【Windows 11】他社製ソフトを使用せずCabファイルを作成する方法
この記事は次のような人におすすめ!

・Windows 11でCabファイルを作成したい人
・他社製ソフトを使用せずにCabファイルを作りたい人

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

makecab
既存のファイルをキャビネット (.cab) ファイルにパッケージ化する makecab コマンドに関する参照記事。

また、今回は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ファイルを作成したいフォルダパス]

makecab.batの実行
makecab.batの実行画面

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

Windows
ぎょうざまるをフォローする
KGM Information

コメント

タイトルとURLをコピーしました