読者です 読者をやめる 読者になる 読者になる

ゴミ溜め@技術系日常系雑文

主にWeb技術やそのほかつまづいたこととか引っかかって調べたこととかをまとめてます。

はてなダイアリーから引っ越しました。)

関連テキストファイルが連番のフォルダごとにまとめられてるのをフォルダごとにファイル結合して別のフォルダに出力するバッチ

Windows バッチ

関連テキストファイルが連番のフォルダごとにまとめられてるのをフォルダごとにファイル結合して別のフォルダに出力するバッチ。

よくわかんないね。
たとえばこんなファイル群を

Dドライブ
 |
 +- <設定資料>
  |
  +- <設定資料01>
  | |
  | +- 設定1_A.txt
  | +- 設定1_B.txt
  | +- 設定1_C.txt
  |
  +- <設定資料02>
  | |
  | +- 設定2_A.txt
  | +- 設定2_B.txt
  | +- 設定2_C.txt
  |
  +- <設定資料03>
  | |
  | +- 設定3_A.txt
  | +- 設定3_B.txt
  | +- 設定3_C.txt
  :

こんな風に結合したいとき

Eドライブ
 |
 +-<設定資料まとめ>
  |
  +- 設定01.txt
  +- 設定02.txt
  +- 設定03.txt
  :

バッチで何とかしたい場合はこんな感じ。

@ECHO OFF

ECHO =======================================
ECHO 初期値の設定...
SET BASE_FILE_NAME=設定
SET TGT_DRIVE_SYMBOL=D
SET TGT_DIR=D:\設定資料
SET OUT_DIR=E:\設定資料まとめ
SET TGT_EXT=txt
SET OUT_EXT=txt

SET /a NUM=0
ECHO =======================================

:ROOP
ECHO =======================================
ECHO ループ処理...

ECHO ---------------------------------------
ECHO 変数設定...
SET /a NUM=%NUM%+1
IF %NUM% LSS 10 (SET NUM_P=0%NUM%) ELSE (SET NUM_P=%NUM%)
SET FILE_A=%BASE_FILE_NAME%%NUM%_A.%TGT_EXT%
SET FILE_B=%BASE_FILE_NAME%%NUM%_B.%TGT_EXT%
SET FILE_C=%BASE_FILE_NAME%%NUM%_C.%TGT_EXT%
SET FILE_OUT=%OUT_DIR%\%BASE_FILE_NAME%%NUM_P%.%OUT_EXT%

ECHO NUM   = [%NUM%]

ECHO ---------------------------------------
ECHO ディレクトリ移動...
@ECHO ON
CD /d %TGT_DRIVE_SYMBOL%:
CD %TGT_DIR%%NUM_P%
@ECHO OFF

ECHO ---------------------------------------
ECHO 結合実行...
COPY /B %FILE_A%+%FILE_B%+%FILE_C% %FILE_OUT%

ECHO =======================================
IF EXIST %FILE% (
ECHO ステップ終了, 次へ.
GOTO ROOP
) ELSE ECHO ファイル[%file%]がありません.処理を終了します.

ECHO 終了...

PAUSE