情報
概要
ファイルを単純分割します。
結合用のバッチファイルも一緒に作成します。
解説
引数
分割ファイル:分割したいファイルの絶対パス
出力パス:破片ファイル、結合用バッチファイルの出力先パス
分割サイズ:破片ファイルの最大サイズ(B)
返り値
(結合用バッチファイルの絶対パス)
(破片ファイル001の絶対パス)
(破片ファイル002の絶対パス)
(破片ファイル003の絶対パス)
~~~
サンプルプログラム
なし
//本体
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
●ファイル分割ログ出力(バッファ経過数,バッファ分割数,経過数,分割数)
母艦=「{バッファ経過数}/{バッファ分割数} - {経過数}/{分割数}」。
●ファイル分割(分割ファイルを出力パスに分割サイズで)
#オプション
分割識別ヘッダ=「part-」
バッファサイズ=1024 * 512 # 512KB
もし、分割ファイル=空ならば、「分割ファイルが空です。」と言う。戻る。
もし、分割ファイルの存在=いいえならば、「分割ファイルが存在していません」と言う。戻る。
#-----------------------------------------------------------------------
# ファイルの分割プログラム
#-----------------------------------------------------------------------
# -- 分割におけるメモ
# 分割サイズ=1024 * 1024 * 1.2 # FD(1.2M)
# 分割サイズ=1024 * 1024 * 1.4 # FD(1.4M)
# 分割サイズ=1024 * 1024 * 8 # SDカード(8M)
#-----------------------------------------------------------------------
ファイル名=分割ファイルからファイル名抽出。
出力パス=出力パスの終端パス追加。
出力パスにフォルダ作成。
#-----------------------------------------------------------------------
# 分割数を計算
B=分割ファイルのファイルサイズ。
CNT=INT(B÷分割サイズ)。
もし、(B%分割サイズ)<>0ならば、CNT=CNT+1。
# 実際の分割
H=分割ファイルを「読」でファイルストリーム開く。
ファイル一覧=空。
#-----------------------------------------------------------------------
ゼロ数=CNTのバイト数。
Iを0から(CNT-1)まで繰り返す
# 保存用のファイル
F=「{分割識別ヘッダ}{ファイル名}.{(I+1)をゼロ数でゼロ埋め}」。
ファイル一覧にFを配列追加。
Hで(I*分割サイズ)にファイルストリーム位置設定。
# 巨大ファイル対策 - コピーバッファに分けてコピー
今回サイズ=分割サイズ。
次回位置=(I+1)*分割サイズ。
もし、次回位置>Bならば、
今回サイズ=B-I*分割サイズ。
H2=出力パス&Fを「書」でファイルストリーム開く。
CNT2 = INT(今回サイズ÷バッファサイズ)。
もし、(今回サイズ%バッファサイズ)<>0ならば、CNT2=CNT2+1
Jを0からCNT2まで繰り返す
SZ=バッファサイズ。
NEXT=(J+1)*バッファサイズ
もし、NEXT>今回サイズならば
SZ=今回サイズ-J*バッファサイズ
S=HでSZをファイルストリーム読む。
H2でSをファイルストリーム書く。
ファイル分割ログ出力(J,CNT2,F,CNT)。
H2をファイルストリーム閉じる。
ファイル分割ログ出力(J,CNT2,F,CNT)。
Hをファイルストリーム閉じる。
#-----------------------------------------------------------------------
# 結合用のバッチファイルを保存
結合用ファイル一覧=ファイル一覧を「+」で配列結合
BAT補助=ファイル名の「.」を「_」に置換。
BAT名=「{出力パス}{BAT補助}.bat」
「rem ファイルの結合用バッチファイル{改行}copy /b {結合用ファイル一覧} {ファイル名}」をBAT名に保存。
#-----------------------------------------------------------------------
返値ファイル一覧=空。
BAT名を返値ファイル一覧に配列追加。
ファイル一覧で反復
出力パス&対象を返値ファイル一覧に配列追加。
返値ファイル一覧で戻る。
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
最終更新:2009年05月31日 17:27