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