ファイルを送ったり、どっかにアップロードしたりする時、
大きなファイルは分割して送ったりします...
知ってる人には、なんてことないんですが、
久しぶりにやるとちょっと引っ掛かったんで...
Win10→Win11でなんか変わった?
備忘録です。
こちらはよくある? batファイル 10MBで分割の例 これはWin10の時と同じ

setlocal
set ddf=%TEMP%\cabprof.ddf
(echo %1) > "%ddf%"
REM 10MB単位でファイルを分割する
makecab ^
/d MaxDiskSize=10240000 ^
/d RptFileName=NUL ^
/d InfFileName=NUL ^
/d DiskDirectoryTemplate="%~n1" ^
/f "%ddf%"
del "%ddf%"
参考例・・・
スティックくん_video.mp4 ・・・・26MB越え があるとします
10MB以下のファイルに分割して小分けしたい。とします
gmailとかの添付ファイルサイズの上限 25MBだったかな...も、越えてる
自分の場合の手順・・・
それを一旦作業用の適当なディレクトリ(Split_File_batフォルダ)にコピーします。
自分の場合はそこに10MB分割用の先のbatファイルを予め置いてある。
そこに スティックくん_video.mp4 のコピーを置いたところ

でもって、
スティックくん_video.mp4をドラッグしてSplit_10MB_file.batへ
持って行きます

Win10の時ってドラッグする時に、その図みたいに
大きなアイコンに変わってたかなぁ...
すると・・・
バッチファイルの実行され こんな画面・・・表示されます
上記30MBのファイルなら、
数秒で処理終わってコマンドプロンプト画面消えます

先のフォルダに
スティックくん_video フォルダが自動で生成されます。

その スティックくん_video フォルダを開いてみると。。。
中には 分割されたcabファイルができてます。
26MBのファイルが10MB以下に分割されたので3つあります。

ファイルサイズ制限が掛かったところを通れます・・・
これで各々ファイルを
メールで添付して送ったり、どっかに一旦アップロード とかします
今度、 復元する時は・・・
たとえばここでは 復元フォルダ っての作って、そこに分割されてた
ファイル置きました。

★大事なのが1.cab を ダブルクリック。
(自動で作られたファイル名、番号にちゃんと意味がある。
複数生成されるcabファイルはセットで扱う。)
すると・・・ あら不思議! 一瞬で
1.cab が スティックくん_video.mp4 に変身 ...したように見える ^^;
エクスプローラーのフォルダの表示先の復元フォルダの下層?に
勝手に移動・・・この辺がちゃんと以前の覚えてないので何がどうなった???
ですね。
2.cab、3.cab も表示上は消えてる

(微妙に気になること。。。元ファイルは27.3MBなのに26.6MB 小さくなってる)
これでスティックくん_video.mp4をダブルクリックしても
動画再生はされない。
ちなみに エクスプローラーの上↑で 上位に上がってみると、
そこは1.cab です。 1.cab自体がフォルダみたいな感じで中を覗くと
スティックくん_video.mp4が入ってる って感じ。

ただbatでの makecab の処理。。。といってしまえばそれだけだけど
1.cabをダブルクリックすると、エクスプローラーに展開先の選択 画面が出ます。
ここでは ビデオ フォルダ選択して 展開 すると・・・
その後はダブルクリックで再生されます

展開ボタン押すと 復元ファイルができます。

(ファイルサイズはちゃんと27.3MBに戻ってる ^^;)
他、展開とかしなくて、 mp4が表示された時点で
適当にコピーして他へ移動したらも結合復元されたファイルとしてフツーに扱える
一応、 先のbatファイル 各行毎の説明つけときます
setlocal
バッチファイル内で設定する環境変数を「ローカル化」します。
このバッチ終了後に変数が外部環境へ影響しないようにするための宣言。
set ddf=%TEMP%\cabprof.ddf
一時フォルダ(%TEMP%)に cabprof.ddf というファイル名を変数 ddf に設定。
DDF (Directive Definition File) は makecab に渡す設定ファイルです。
(echo %1) > "%ddf%"
バッチに渡された第1引数(%1 = 分割対象ファイルのパス)を DDF ファイルに書き込みます。
つまり「このファイルをCAB化せよ」という指示を DDF に記録。
REM 10MB単位でファイルを分割する
コメント行。処理の意図を説明しています。
実際の分割サイズは次の makecab のオプションで指定。
makecab ^
Windows標準の「CABファイル作成ツール」を呼び出し。
^ は行継続記号で、次の行にオプションを続けて書けるようにしています。
/d MaxDiskSize=10240000 ^
1つのCABファイルの最大サイズを指定。
10240000 ≈ 10MB(10,240,000バイト)。
このサイズを超えると自動的に分割されます。
/d RptFileName=NUL ^
レポートファイルの出力先を NUL に指定。
つまりレポートを作らず捨てる設定。
/d InfFileName=NUL ^
INFファイル(展開用スクリプト)の出力先を NUL に指定。
これも不要なので生成しない。
/d DiskDirectoryTemplate="%~n1" ^
出力ディレクトリ名のテンプレートを指定。
%~n1 は第1引数の「拡張子を除いたファイル名」。
/f "%ddf%"
先ほど作成した DDF ファイルを指定。
このファイルに「対象ファイル名」が書かれているので、それをCAB化する。
del "%ddf%"
一時的に作った DDF ファイルを削除。
後始末をして環境をきれいに保つ。
まとめ
一時的に DDF ファイルを作成
makecab に渡して 対象ファイルを 10MB 単位でCAB分割
出力は元ファイル名のフォルダに保存
最後に DDF を削除という流れになっています。