●ファイル分割

「●ファイル分割」の編集履歴(バックアップ)一覧はこちら

●ファイル分割」(2009/05/31 (日) 17:27:21) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*情報 作者名:クジラ飛行机 引用元:[[ファイルの分割ツールを作ってみよう!(第75回):クジラ飛行机「文系サラリーマンのための仕事に役立つプログラミング入門」>http://pc.nikkeibp.co.jp/article/column/20080522/1003240/?P=2]] 勝手に改変 *概要 ファイルを単純分割します。 結合用のバッチファイルも一緒に作成します。 *解説 ***引数 分割ファイル:分割したいファイルの絶対パス 出力パス:破片ファイル、結合用バッチファイルの出力先パス 分割サイズ:破片ファイルの最大サイズ(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名を返値ファイル一覧に配列追加。   ファイル一覧で反復     出力パス&対象を返値ファイル一覧に配列追加。      返値ファイル一覧で戻る。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- ---- #comment() ----
*情報 作者名:クジラ飛行机 引用元:[[ファイルの分割ツールを作ってみよう!(第75回):クジラ飛行机「文系サラリーマンのための仕事に役立つプログラミング入門」>http://pc.nikkeibp.co.jp/article/column/20080522/1003240/?P=2]] 勝手に改変 *概要 ファイルを単純分割します。 結合用のバッチファイルも一緒に作成します。 *解説 ***引数 分割ファイル:分割したいファイルの絶対パス 出力パス:破片ファイル、結合用バッチファイルの出力先パス 分割サイズ:破片ファイルの最大サイズ(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名を返値ファイル一覧に配列追加。   ファイル一覧で反復     出力パス&対象を返値ファイル一覧に配列追加。      返値ファイル一覧で戻る。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- ---- #comment() ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

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