0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フォルダ内の同一拡張子のファイルを結合して一つのファイルにまとめる

Posted at

同一拡張子のファイルを一つのまとめたい

業務でDDLの差分チェックを任されたのですが、一方が一つのSQLファイルにまとまっているのに対し、もう一方は1テーブルにつき1ファイルで作成されていました。
テーブルは全部で200個以上あり、このままの状態で差分比較をするのは現実的でなかったので、後者を一つのファイルにまとめるスクリプトを作成しました。

実行環境

  • Windows 11

1. スクリプトの作成

下記スクリプトを適当なファイルパスに作成します。

concatFiles.bat
@echo off
setlocal

rem 1. 
rem 出力元フォルダ
set "SOURCE_DIR=C:\Users\dev\sql"
rem 出力先フォルダ
set "OUTPUT_DIR=C:\Users\dev\sql\concat"
rem 出力ファイル名
set "OUTPUT_FILE=combined.sql"

rem 2. 
rem 出力ファイルがすでに存在する場合は削除
if exist "%OUTPUT_DIR%\%OUTPUT_FILE%" del "%OUTPUT_DIR%\%OUTPUT_FILE%"

rem 3. 
rem 指定したディレクトリ内のすべての.sqlファイルを結合
for /f "delims=" %%f in ('dir /b /on "%SOURCE_DIR%\*.sql"') do (
    type "%%f" >> "%OUTPUT_DIR%\%OUTPUT_FILE%"
    echo. >> "%OUTPUT_DIR%\%OUTPUT_FILE%"
    echo. >> "%OUTPUT_DIR%\%OUTPUT_FILE%"
)
)

echo 結合が完了しました: %OUTPUT_DIR%\%OUTPUT_FILE%
pause
endlocal

解説

  1. 出力元フォルダ、出力先フォルダ、ファイル名を指定します。
    もし実行時にそれらを指定したい場合は、以下のように引数を使う形に変更可能です。
    .bat
    set "SOURCE_DIR=%1"
    set "OUTPUT_DIR=%2"
    set "OUTPUT_FILE=%3"
    


2.
if exist コマンドで、同名のファイルがすでに存在する場合は、そのファイルを削除します。
これにより、古い内容が残った状態で上書きされるのを防ぎます。
3.

  • for /f "delims=" %%f in ('dir /b /on "%SOURCE_DIR%\*.sql"')
    指定されたディレクトリ内にあるすべての .sql ファイルを取得し、ファイル名を昇順に並べます。
  • /b はファイル名のみを表示し、/on でファイル名を昇順にソートします。
  • 各ファイルを type コマンドで読み込み、出力ファイル %OUTPUT_FILE% に追加します。
  • echo. を2回実行して、ファイル間に2行の空行を挿入し、視覚的な区切りをつけています。
    この区切りにより、結合された各テーブルの間がはっきりとわかるようになります。不要な場合は削除してください。

2. 実行方法

エクスプローラーからバッチファイルをダブルクリックで実行できます。

バッチファイル.png

または、コマンドプロンプトを開き、バッチファイルのファイルパスを入力して実行します。

C:\Users\dev> C:\Users\dev\pj\bat\concatFiles.bat

フォルダやファイル名を引数指定にした場合は、以下のようにして実行します。

C:\Users\dev> C:\Users\dev\pj\bat\concatFiles.bat "C:\Users\dev\sql" "C:\Users\dev\sql\concat" "combined.sql"

3. 実行結果

結合前のファイル

ファイル1.png
ファイル2.png
ファイル3.png

結合ファイル

結合結果.png

ひとつのファイルにまとまりました。間に空行が入っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?