cmd:ファイル結合バッチ

結合バッチを作ってみました。
万が一使用する人がいたとしたら、自己責任で使用してください。
当バッチを使って起きた問題に対して、僕は一切責任を負いません。

join.bat
@ECHO OFF

ECHO ■■■■■■■■■■■■■
ECHO ■【ファイル結合バッチ】■
ECHO ■■■■■■■■■■■■■

REM ******************************************************
REM *【説明】                                            *
REM * 分割されたファイルを結合します。                   *
REM * 拡張子が、".001、.002、…"、または、".aa、.ab、…" *
REM * であるファイルをCOPYコマンドを使用して結合します。 *
REM ******************************************************

REM *********************************************************************************
REM *【使用方法】                                                                   *
REM * ①結合したいファイルを当バッチファイルと同じフォルダに配置します。            *
REM * ②結合したいファイルを選択し、当バッチファイルにドラッグアンドドロップします。*
REM * ③メッセージにしたがって、ファイルを結合します。                              *
REM *********************************************************************************

REM ---バッチファイルのフォルダに移動-------------------------
CD /D %~dp0

REM ---一時ファイル名と結合先ファイル名の宣言-----------------
SET tmpfilelist=join.tmp.list.txt
SET tmpfilesort=join.tmp.sort.txt
SET outfname=%~n1
SET FCNT=0

REM ---ファイルの存在チェック---------------------------------
IF EXIST "%tmpfilelist%" (
    CALL :ERROR "0" %tmpfilelist%
    GOTO :END
)
IF EXIST "%tmpfilesort%" (
    CALL :ERROR "0" %tmpfilesort%
    GOTO :END
)
IF EXIST "%outfname%" (
    CALL :ERROR "1" %outfname%
    GOTO :END
)

REM ---マージ用にファイル名をソートしてファイルに書き出し-----
ECHO;
ECHO ■【結合元ファイル一覧】
TYPE nul > "%tmpfilelist%"
FOR %%i IN (%*) DO (
    IF "%%~dpi" NEQ "%~dp0" (
        CALL :ERROR "2" %%i
        GOTO :END
    )
    IF NOT EXIST "%%~nxi\" (
        ECHO %%~nxi >> "%tmpfilelist%"
        ECHO ■ %%~nxi
        SET /A FCNT+=1
    )
)

REM ---結合ファイル数のチェック-------------------------------
IF %FCNT% LSS 2 (
   CALL :ERROR "3"
   GOTO :END
)

REM ---結合の確認メッセージ-----------------------------------
ECHO;
ECHO ■【結合先ファイル】
ECHO ■ %outfname%
ECHO ■に【結合元ファイル一覧】のファイルを結合します。
SET /P input=■結合してもよろしいですか?(はい:Y、いいえ:N):
IF /I "%input%" NEQ "y" (
    ECHO ■処理を中断します。
    CALL :DELTMP
    GOTO :END
)

REM ---結合処理-----------------------------------------------
ECHO;
ECHO ■結合処理を開始しました。
SORT "%tmpfilelist%" > "%tmpfilesort%"
SET CNT=0
FOR /F "delims=" %%i IN (%tmpfilesort%) DO (
    CALL :JOIN "%%i"
)
CALL :DELTMP
ECHO ■結合処理が完了しました。
GOTO :END

REM ---エラー処理---------------------------------------------
:ERROR
ECHO;
ECHO ■!!!エラー!!!
IF %1 EQU "0" (
    REM 一時ファイルの存在チェックエラー
    ECHO ■【一時ファイル】
    ECHO ■ %2
    ECHO ■を削除してください。
) ELSE IF %1 EQU "1" (
    REM 結合先ファイルの存在チェックエラー
    ECHO ■【結合先ファイル】
    ECHO ■ %2
    ECHO ■が既に存在します。
) ELSE IF %1 EQU "2" (
    REM 結合元ファイルの配置エラー
    ECHO ■【結合元ファイル】
    ECHO ■ %2
    ECHO ■をバッチファイルと同じフォルダに配置してください。
    CALL :DELTMP
) ELSE IF %1 EQU "3" (
    REM ファイル数が2つより少ない
    ECHO ■ 結合したいファイルを2つ以上選択し、
    ECHO ■ 当バッチファイルにドラッグ&ドロップしてください。
    CALL :DELTMP
)
ECHO ■処理を中断します。
GOTO :EOF

REM ---一時ファイルの削除処理---------------------------------
:DELTMP
IF EXIST "%tmpfilelist%" (
    DEL "%tmpfilelist%"
)
IF EXIST "%tmpfilesort%" (
    DEL "%tmpfilesort%"
)
GOTO :EOF

REM ---結合処理-----------------------------------------------
:JOIN
SET /A CNT+=1
ECHO ■%CNT%つめのファイルを結合中
IF %CNT% EQU 1 (
    COPY /B "%~nx1" "%outfname%"
) ELSE (
    COPY /B "%outfname%" + "%~nx1"
)
GOTO :EOF

REM ---終了処理-----------------------------------------------
:END
ECHO;
ECHO ■処理が完了しました。
[[PAUSE]]



最終更新:2014年07月29日 23:55
ツールボックス

下から選んでください:

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