ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Windows標準で大きいファイルを分割する

今回は、Windows標準で使えるTips的な機能を紹介したいと思います。

以前、仕事でとても大きなファイルを、とあるクラウドストレージに格納する必要がありました。

しかし、そのクラウドストレージにはファイルサイズの上限値が設定されており、とても大きなファイルをアップロードすることができませんでした。
そのため、今回紹介する機能を使ってそのとても大きなファイルを物理的に分割してあげることで、ファイルをクラウドストレージにアップロードすることができました(分割したファイルを別々にアップロード)。

ファイル分割方法

それでは、さっそくファイルの分割方法について説明したいと思います。

テキストファイルに以下のコマンドを入力し、「splitfile.bat」のようなファイル名で保存します。

setlocal
set ddf=%TEMP%\cabprof.ddf
(echo %1) > "%ddf%"
REM 100MB単位でファイルを分割する
makecab ^
  /d MaxDiskSize=102400000 ^
  /d RptFileName=NUL ^
  /d InfFileName=NUL ^
  /d DiskDirectoryTemplate="%~n1" ^
  /f "%ddf%"
del "%ddf%"


色々とコマンドが記載されていますが、重要なのは、makecabコマンドになります。
これは、ファイルをcab形式で圧縮するためのWindowsコマンドです。cab形式はMicrosoft独自の圧縮形式で、Windows内部ではよく使用されている圧縮形式のようです。

また、makecabコマンドのオプションである「/d MaxDiskSize=102400000」も重要になります。これはファイル分割単位のサイズ(バイト)になります。

たとえば、350MBのファイルを分割した場合は、100MBのファイルが3つと、50MBのファイルが1つ作成されることになります。
この値は、分割前のファイルサイズを見て調整すると良いと思います。

そして、このバッチファイルに分割したいファイルをドラッグアンドドロップすると分割処理が開始します。

ファイルのサイズによって、分割処理にかかる時間は変わると思いますが私の環境で300MBくらいのファイルは1分15秒程度で完了しました。
やや時間がかかるのがネックですね・・・以下は圧縮処理実行中の画面になります。

f:id:mr_star:20210824184141p:plain
ファイル分割ツール①

そして、上記の分割バッチ実行後は以下のように分割したファイルのファイル名でディレクトリが作成されます。ここでは、"bigfile.zip"が分割したファイルで、「bigfile」ディレクトリがバッチ実行後に作成されたディレクトリになります。

f:id:mr_star:20210824184307p:plain
ファイル分割ツール②

作成されたディレクトリを開くと、ファイルサイズによっていくつかのcab形式で分割されたファイルが作成されていると思います。
これは先ほど説明させていただいたとおり、「MaxDiskSize」の設定値でファイルが分割して作成されているはずです。
今回は100MBで設定しているので、その通りになっています。

f:id:mr_star:20210824184334p:plain
ファイル分割ツール③

ファイル復元方法

上記のバッチファイルで分割したファイルは、あとで復元できないと意味がありません。分割されたファイルはそれぞれでは使うことができません。
そのため、ファイル復元方法を説明したいと思います。とても簡単です。

分割されたファイルの一つである「1.cab」を右クリック、「プログラムから開く」で「エクスプローラー」を選択します。
※複数分割されたファイルがある場合でも、必ず「1.cab」のファイルでこの操作を行ってください。たとえば、「2.cab」や「3.cab」などでこの操作を行っても何も表示されません。

そうすると、以下のようにエクスプローラーが開くと思いますので、表示されているファイル(以下では"bigfile.zip")を選択して、右クリック、「展開」を選択します。すると、展開先の選択を行うダイアログが開きますので任意の場所を選択して「展開」を押下します。

f:id:mr_star:20210824185619p:plain
ファイル分割ツール③

これで復元完了です。展開先のディレクトリに元のファイルが復元できているはずです。

おわりに

いかがでしたでしょうか。あまり、使う出番がないかもしれませんが使うタイミングがいつかは訪れるかもしれません。
こういうのは覚えておけないので、このように備忘録というかメモとして残しておきたいですね。

最後までお読みいただきありがとうございました。この辺で失礼いたします。

参考

makecabコマンドの細かい使い方などは、以下のページなどを参照いただければと思います。
makecab | Microsoft Docs
https://docs.microsoft.com/ja-jp/previous-versions/bb417343(v=msdn.10)