Windows環境 ファイル分割
・あるWindows環境で、フリーソフトのインストールが禁止されている。
・ファイルを分割したい。
・開発環境は手元にある。
上記に当てはまる場合には、下記コードを自分の環境でコンパイルして、
ファイルを分割しては?
(コマンドプロンプトでは、結合はできるが分割はできないために
こんなことを・・)
<使用方法> 1.分割 ~~~~~~~ DevideFile 分割元ファイル名 分割ファイルサイズ(バイト) 分割元ファイルサイズに対して、分割ファイルサイズがあまりに小さいと 分割先ファイル数が多くなってしまうので注意。 テストは行ったが、念のため、分割先ファイルを結合して、分割元ファイルと fcすることを推奨。 ※fc /b 分割元ファイル 分割先ファイルを結合したファイル 2.結合 ~~~~~~~ コマンドプロンプトにて、 copy /b hogehoge.wmv_* hogehoge.wmv
----------------------分割コードここから-------------------------------- #include<stdio.h> #include<stdlib.h> #include<string.h> void PrintHowUse(); int main(int argc,char *argv[]){ FILE *fp; char *buf; FILE *fpOut; char name[1024]; int i; int size; int flag; if(argc != 3){ PrintHowUse(); return EXIT_FAILURE; } fp = fopen(argv[1], "rb"); if(fp == NULL){ printf("ファイルを開けませんでした。(%s)\n\n", argv[1]); PrintHowUse(); return EXIT_FAILURE; } buf = malloc(atoi(argv[2])); if(buf == NULL){ printf("メモリ領域の確保に失敗しました。\n\n"); PrintHowUse(); return EXIT_FAILURE; } i = 0; flag = 0; while(1){ memset(buf, 0x00, atoi(argv[2])); memset(name, 0x00, 1024); size = fread(buf, 1, atoi(argv[2]), fp); if(feof(fp) != 0){ /* ファイルの終わりまで */ flag = 1; } sprintf(name, "%s_%05d", argv[1], i); fpOut = fopen(name, "wb"); if(fp == NULL){ printf("ファイルを開けませんでした。\n\n"); PrintHowUse(); return EXIT_FAILURE; } fwrite(buf, 1, size, fpOut); fclose(fpOut); if(flag == 1){ break; } i++; } free(buf); fclose(fp); printf("分割完了\n"); return EXIT_SUCCESS; } void PrintHowUse(){ printf("<使い方>\n\n" "DevideFile ファイル名 分割ファイルサイズ(バイト)\n"); } ----------------------分割コードここまで--------------------------------