●ファイル分割

情報


概要

ファイルを単純分割します。
結合用のバッチファイルも一緒に作成します。

解説

引数

分割ファイル:分割したいファイルの絶対パス
出力パス:破片ファイル、結合用バッチファイルの出力先パス
分割サイズ:破片ファイルの最大サイズ(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名を返値ファイル一覧に配列追加。
  ファイル一覧で反復
    出力パス&対象を返値ファイル一覧に配列追加。
  
  返値ファイル一覧で戻る。
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------


名前:
コメント:


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月31日 17:27
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。