複数ファイルの内容を1ファイルにまとめるバッチを作ってみた

2017年8月30日Windows DOS,開発

おはようございます。

ちょっと需要があるのかどうかわかりませんが、
複数ファイルの内容を読込み、1つのファイルに出力するバッチを作成しました。

用途としては、
複数に分けて管理している SQLファイルなどを
サクッと一括実行できるようにまとめる。といった感じです。

簡単なバッチなので、
色々と応用することはできそうですしね。

スポンサーリンク

テキスト結合バッチ

次のプログラムをテキストファイルに張り付け、
「TextFileJoin.bat」などと、名前を付けて保存します。

@echo off
REM -----------------------------------------------------------------------------------------
REM ファイル結合バッチ
REM -----------------------------------------------------------------------------------------
REM 概要: 
REM       実行ファイルと同じディレクトリに存在するファイルを読み取り、
REM       内容を1つのファイルに出力します
REM -----------------------------------------------------------------------------------------
SET FILTER=*.sql
SET FILE=RESULT.TXT
SET LOGF=fileJoin.log
SET CURDIR=%CD%

:LA_STARTBATCH
cls
ECHO.
ECHO %CURDIR% 配下に存在する %FILTER% の内容を %FILE% に出力します。
ECHO.
SET /p choice=よろしいですか( y / n )⇒
IF '%choice%'=='' GOTO LA_STARTBATCH
IF '%choice%'=='n' GOTO LA_ENDBATCH

REM コマンドチェック
call :LA_CHECK_COMAND yn

ECHO [%DATE% %TIME%] バッチ処理開始 > %LOGF%
ECHO. >> %LOGF%
ECHO. > %FILE%

FOR /R %%A IN (%FILTER%) DO (
        ECHO %%A
        ECHO %%A >> %LOGF%
        ECHO -- %%A -- >> %FILE%
        FOR /F "TOKENS=1* DELIMS=: EOL=" %%X IN ('FINDSTR /N "^" %%A') DO (
                ECHO.%%Y >> %FILE%
        )
        ECHO. >> %FILE%
)

ECHO. >> %FILE%

GOTO LA_ENDBATCH

REM * =========================================================================================================
REM * コマンドチェック
REM * =========================================================================================================
:LA_CHECK_COMAND
ECHO %1 > tmp.text
SET RET=
FOR /F "usebackq" %%t IN (`findstr %choice% tmp.text`) DO SET RET=%%t
DEL tmp.text
IF '%RET%'=='' (
GOTO LA_INPUT_MISSING
)

EXIT /b

REM * =========================================================================================================
REM * 入力ミス
REM * =========================================================================================================
:LA_INPUT_MISSING
ECHO.
SET /p miss=入力に誤りがあります。
GOTO LA_STARTBATCH

REM * =========================================================================================================
REM * バッチ終了処理
REM * =========================================================================================================
:LA_ENDBATCH

ECHO.
SET /p end=終了するにはEnterキーを押してください...
ECHO [%DATE% %TIME%] バッチ処理終了 >> %LOGF%

EXIT

 

実行イメージ

起動

確認メッセージが表示されるので「y」を入力して Enter を押します。

処理

終了メッセージが表示されれば完了です。

出力されたファイル

同じディレクトリに「RESULT.TXT」という名前でファイルが出力されます。

RESULT.TXT

といった感じです。

バッチって便利ですよね。
大したものではないですが何かのお役に立てれば。。

ではでは。

スポンサーリンク


関連するコンテンツ

2017年8月30日Windows DOS,開発BAT,Batch,DOS,Windows,バッチ

Posted by doradora