yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

テキストファイルの後に文字列を挿入するバッチ

気軽に「こんなソフトありませんか?」Part.163
http://anago.2ch.net/test/read.cgi/software/1402006401/
の850氏の投稿を見てなんかやる気が湧いてしまった。
実用性ゼロのバッチ。

使い方

  1. insert_txt.txtを作成、挿入する文字列を書く。改行可能。ただしコマンドプロンプトの制限で一行あたりWindows2000以前は2047文字、XP以降は8191文字までになる。
  2. 対象ファイルとinsert_txt.txtを同じフォルダーに
  3. バッチの2行目、C:\1をそのフォルダーのパスに書き換え
    setlocal
    pushd C:\1
    dir /b >dir_b.txt
    set /a skip_num=0
    
  4. ダブルクリックでバッチ実行

バッチ

setlocal
pushd C:\1
dir /b >dir_b.txt
set /a skip_num=0

:for_loop
pause
set /a skip_num=%skip_num%+1
for /f "skip=%skip_num% tokens=1" %%i in (dir_b.txt) do call :process %%i

:process
set file_name_old=%file_name%
set file_name=%*
if "%file_name_old%."=="%file_name%." goto :quit
REM 前回処理したファイル名と今回処理予定のファイル名が一致したらもう処理は完了してるので殺す
if "%file_name%."=="." goto :quit
REM dir /b の結果が空行になったらそれはエラーなので殺す
if not "%file_name:~-4,4%."==".txt." goto :for_loop
REM 拡張子が.txtじゃないなら飛ばす
if "%file_name%."=="insert_txt.txt." goto :for_loop
if "%file_name%."=="dir_b.txt." goto :for_loop
if "%file_name%."=="ファイルが見つかりません." goto :quit
echo.>>%file_name%
REM 改行の挿入
for /f "tokens=* delims=" %%i in (insert_txt.txt) do echo %%i >>%file_name%
REM insert_txt.txtは挿入する文字列が記されたファイル
goto :for_loop

:quit
echo 処理終了
endlocal
pause
exit