バッチファイルで複数のテキストファイルの置換

このQ&Aのポイント
  • バッチファイルを使用して、フォルダ内の複数のテキストファイルにある特定の文字列を置換する方法について質問があります。
  • 期待する結果は、置換された文字列を含む同じファイル名で、元のファイルとは別のファイルに保存することです。
  • もしバッチファイルではなくても、他の方法で同様の処理を行う方法があれば教えてください。
回答を見る
  • ベストアンサー

バッチファイルで複数のテキストファイルの置換

バッチファイルで以下のような処理を行うことはできないでしょうか? フォルダ1以下の全てのテキストファイル内の abcde という文字列を あいうえお に置換して、上書き保存ではなく 元のファイル名+(編集済み).txt というファイル名で同じ場所に保存できないでしょうか。 バッチファイルで出来ない場合他の物でも構いません。 ――――――――――――――――――――――――――――― 処理前 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │   ├フォルダ3   │  └フォルダ4   │     └ファイル2.txt (内容:abcde123abcde123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― ↓ ――――――――――――――――――――――――――――― 処理後 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │  └ファイル1(編集済).txt (内容:123あいうえお)   │   ├フォルダ3   │  └フォルダ4   │     ├ファイル2.txt (内容:abcde123abcde123)   │     └ファイル2(編集済).txt (内容:あいうえお123あいうえお123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― こんな感じで出来ないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nondaku0
  • ベストアンサー率66% (10/15)
回答No.1

こんなのでどうでしょう? @echo off setlocal for /r %%a in (*) do ( echo %%a for /f "usebackq tokens=1* delims=" %%b in ("%%a") do ( set oldtext=%%b call :SUB abcd あいうえ "%%a" ) ) goto :EOF :SUB call set newtext=%%oldtext:%1=%2%% echo %newtext%>>"%~pn3(編集済)%~x3" goto :EOF

20130330
質問者

お礼

お礼が遅くなり申し訳ありません。 動作確認しました、期待通りの動作で感激しております。 この度はどうもありがとうございました。

その他の回答 (1)

  • nondaku0
  • ベストアンサー率66% (10/15)
回答No.2

あ、最初の (*) は (*.txt) に読み替えてください。

20130330
質問者

お礼

3行目の(*)を(*.txt)にして動作確認しました。 どうもありがとうございました。

関連するQ&A

  • テキストファイルの一部を複数パターンで置換

    初めて質問させていただきます。 以下のようなテキストファイル(元ファイル) があります。 1行目 あいうえお 2行目 codea=aaaaa/$$ 3行目 codeb=11111*11111 4行目 … この2行目と3行目の「aaaaa」「11111」 の文字列を以下に従って置換し保存したいです。 置換パターンは、 別ファイルに一覧になっています。 bbbbb 22222 ccccc 33333 … これを、元ファイルの 「aaaaa」を「bbbbb」に、 「11111」を「22222」に置換し、 ファイル名を「bbbbb-22222.txt」として 保存するのを、 置換パターンの数だけ行う必要があります。 VBA、バッチは経験があります。得意分野ではありませんが… 申し訳ありませんが、ご教授いただけないでしょうか?

    • ベストアンサー
    • CSS
  • テキスト内の文字列をファイル名にして保存するバッチ

    テキスト内のデータをファイルとして保存するバッチを作成したいです。テキスト内のデータをフォルダ名として保存する方法は見つけたのですがテキストとして保存する方法がわからずご教示いただけますと助かります。 例)テキストファイル名:File_List.txt -----テキスト内のデータ------- 会社名A 会社名B 会社名C ------------------------------------------ 実現したいこと 下記のようにテキスト内のデータをファイル名としてそれぞれ保存したい。 会社名A.txt 会社名B.txt 会社名C.txt テキスト内のデータをフォルダ名にするバッチは以下でした。 for /f %%a in (%1) do md %%a Windowsサーバにてバッチを利用します。

  • ExcelVBA バッチファイル編集

    ExcelVBAで再現したい事を検索しましたが望む回答が無かったので質問させていただきます。 実行したいことは、スタートアップにある 【MS-DOSバッチファイル】を裏側?で編集(テキスト)で開き, テキスト内の一部を完全一致で置換を行いたいと考えております。 このバッチファイルを編集して完全一致で置換するところを どのようにコードを記載すればいいか全く分りません。 また置換後は上書き保存を行い【バッチファイル】を実行したいと考えています。 一応流れとしては実行初めに【置換したい文字】【置換後の文字】は退避させております。 正しいか分りませんが、バッチファイルも以下のように指定しました。 ChDrive "C" ChDir "C:Documents and Settings" OpenFileName = Application.GetOpenFilename("batファイル,*.bat") 以上、簡単な事かもしれませんが知恵を貸していただければと思います。

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • 特定のサブフォルダのテキストファイルだけをリネイムするバッチファイル

    特定のサブフォルダのテキストファイルだけをリネイムするバッチファイル 以下のような階層構造でファイルを保存していますが、2回目フォルダのテキストファイルのみを リネイムするバッチファイルは作成可能でしょうか? 仕事で必要なのですが、プログラム的なことはさっぱりわからないので困っております。 ご存じの方がいらっしゃいましたら、何とぞよろしくお願いいたします。 ・構造 以下の2パターン  1.親フォルダ-月フォルダー日フォルダーテキストファイル  2.親フォルダ-月フォルダー日フォルダーn回目フォルダーテキストファイル 例)1.の場合 D:\parent\1月\9日\20100109goo.txt 2.の場合 D:\parent\1月\9日\2回目\20100109goo.txt パターン1、2、ともに親フォルダ内に複数あり バッチファイルの結果:2回目フォルダのテキストファイルのみ            goo.txt→20100109goo.second.txtにしたい

  • バッチファイルでテキストファイルの中身を置換

    dir C:\*.zip /b /a-d /s > ジップ.txt で作成した、ジップ.txtがあります。 このテキストファイルをパス名を削除してファイル名のみに置換したいのですが、どなたか教えて頂けますか?

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • 複数のhtmlファイルの中身を置換したいんです

    すみません、プログラミングド素人です。 この場所に投稿すべき案件なのかどうかもよく分かっていないのですが、よろしくお願いします。 既存のhtmファイルを編集する場合、ホームページ作成ソフトまたはエディタでファイルを開いて、編集したら上書き保存するというのは分かるのですが、多くのファイルをいっぺんに編集したいことがあります。編集内容は中身の文字列を一部置換するというもので、置換する内容はどのファイルに対しても同じです。例えばaaa.htm、bbb.htm、ccc.htm、...という複数のファイルの中に記述されている「ブッシュ」という文字列をすべて「オバマ」に置換するというような感じです。一つ一つ手作業でやっているととても大変なので、まとめてできる方法はないかなというのが投稿の動機です。バッチでできないかと思ってちょっと調べてみましたが、バッチでファイルの中身を書き換えるのはどうも無理のようで、同じようなネット上の質問に対する回答として「VBSでやってみては?」というコメントをいくつか目にしました。プログラミングはほとんどやったことが無いので、できるだけ簡単なやり方の方が良いのですが、VBSとやらを使うのがやはりベストなのでしょうか?それほど難しくないのなら挑戦してみようと思います。よろしくお願いします。

  • バッチファイルでファイル名をリネームのコマンドにつ

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたjかご教授いただけますでしょうか。よろしくお願い致します。

  • バッチファイル内置換

    バッチファイルで、置換をしたいのですが、"="と"<"の置換が出来ません。 ping出力を「file.txt」へ保存し、保存した「file.txt」を一行づつ読み出し下記を実行しています。 for /f "delims=" %%a in ( orig ) do ( set line=%%a call :sub ) :sub set tmp=%line% set tmp=%tmp:<=,% set tmp=%tmp:= =,,% set tmp=%tmp:"時間" =,% set tmp=%tmp:ms=,ms% echo %tmp%>>%CSV_Name% goto :EOF :end 置換出来ないのは、"=" と "<"の文字だけが置換出来ません。 ネットで調べたのですが、"^" でエスケープしても、""二重引用部でくくっても、正しく置換でき有ません。

専門家に質問してみよう