• 締切済み

バッチえファイルを編集するには??

こんばんは。 初めて掲載します。 バッチファイルで、複数のあるファイルの中身の特定の文字列を一括編集したと思っているのですが、どのようにコマンドを組めばいいのでしょうか? コマンド、バッチは初めてなのでどのように組めばいいのか是非ともご教授願います。 例として、バッチを実行すると、 C:\temp\の下にtest1.xmlとtest2.xmlがあります。 バッチファイルを実行すると、その2つのファイルの中身のある特定の文字を編集("AAA"という文字列を"BBB"に)して保存する。 というような処理を行いたいです。

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.3

バッチファイルで文字列置換処理は出来ますが、処理対象に特殊記号が入っていると取り扱いが難しいです。XMLだと " や ! などがあると思うので、無理っぽいです。 Windows標準搭載のVBScriptを使うと良いでしょう。 Set Re = New RegExp Re.Pattern = "AAA" Do While Not WScript.StdIn.AtEndOfStream str = WScript.StdIn.ReadLine WScript.StdOut.WriteLine Re.Replace(str,"BBB") Loop という内容のファイル aaabbb.vbs を作って、 cscript //nologo aaabbb.vbs <test1.xml >test1.xml.output で変換できます。 置換元パターンは正規表現なので、記号を含む文字列を指定したい場合はクォートが必要です。

yoshi8029
質問者

お礼

notnotさん、ご回答ありがとうございます。 VBScriptですか。 試してみます。 ありがとうございました!

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.2

> Active Perlを使う部分をJavaを使ってという風にはできないでしょうか? たぶんできると思うけど、Javaは分かりません。Javaカテゴリで再度質問してみては。

yoshi8029
質問者

お礼

了解です。 ありがとうございました!

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.1

OS標準のバッチの仕組みでだけは不可能。文字列置き換えの部分は何らかのツールを使う必要があります。 私がよくやるのはActive Perlをインストールして、バッチに以下の一文を入れる方法です。 perl -i.bak -p -e 's/AAA/BBB/g' test1.xml perlコマンドを使い、test1.xmlの中の文字列AAAをBBBに置き換え、元のファイルを拡張子bakにして保存しておく という意味です。

yoshi8029
質問者

お礼

x1vaさん、ご回答ありがとうございます。 ツールが必要ですか・・・。 企業のシステム開発なので必要なアプリ以外はインストールできない決まりなので無理っぽいですね(>_<) Javaで開発しているのですが、Active Perlを使う部分をJavaを使ってという風にはできないでしょうか?

関連するQ&A

  • バッチファイル

    お世話になります。 バッチファイルを用いて、実行されるプログラムがあります。 私の作成したものではないので、どのようなやり取りが内部で行われているのかは、詳細はわかりません。 例えば、D:\Programフォルダーの中にプルグラムをインストールしたとすれば、引数を2つ指定して(例:aaaとbbb)、バッチファイル(test.bat)を以下のように実行すれば、プログラムは正常に作動します。 D:\Program>test aaa bbb しかし、以下の場合には、正常に作動しません。 C:\>D:\Program>test aaa bbb つまり、パスを含めて、バッチファイルを実行することは、このプログラムは許可してくれません。 ここで、例えば、VBなどを用いて、テキストボックスなどで引数を二つ指定して、実行ボタンをクリックすれば、必ず、D:\Program>test aaa bbbという状態で、バッチファイルが実行されるようにするには、どのようにすればよろしいでしょうか? もしご存知の方がいらっしゃいましたら、是非、ご教授願います。 以上、宜しくお願いいたします。

  • バッチでiniファイルの編集

    バッチプログラムでiniファイルの編集をしたいのですが、 調べてはいるのですが、初心者の為困っています。 やりたいこと: 特定の文字列を見つけたら置換する 例 iniファイルの内容 ~~~~~~~ abcdef=789 123456=789 ~~~~~~~ 「789」を「xyz」に置換したい OS:Win2k この場合、どのようなコマンドを使用して 編集すれば良いのでしょうか? 宜しくお願い致します。

  • WINDOWS バッチについて

    こんにちは windowsでバッチについてお聞きしたいことがあります。 あるログファイルの中の、特定の文字列だけを抜きだすというような、バッチやバッチテストのやり方を教えて頂けないでしょうか。 本当に初心者なので、困っています。 ちなみに findstrというコマンドをつかって、やりましたが処理が上手くいきませんでした。 詳しいかた、お忙しいと思いますが、宜しくお願いします。 できれば、早めにご回答頂けると嬉しいです。

  • バッチファイルについての質問です

    バッチファイルの質問です。宜しくお願いします。 バッチファイルでテキストファイルの中から指定した文字列が入っている行をとり、指定した文字列を除いた文字列が欲しいのですが、どのようなコマンドを使用すればできるでしょうか? ----------------------- AAAランダム文字列1 BBBランダム文字列2 CCCランダム文字列3 DDDランダム文字列4 EEEランダム文字列5 ----------------------- 上記のようにテキストファイルに書かれていたとして、”ランダム文字列3”という文字だけを取得したいのです。 つたない説明文で申し訳ございませんが宜しくお願いします。

  • batにD&Dした事にするバッチ

    あるフォルダの中の特定の拡張子のファイルだけを(仮にwmvとします) 特定のbatにD&Dした事にするにはどの様に記述すれば良いのでしょうか? 合わせてファイル名の特定の文字列を削除するコマンドを 知りたく思っています。 _bbbを削除したい aaa_bbb.wmv ppp_bbb.wmv お願いします。

  • バッチファイル テキストファイル内の最後の\以下を削除したい

    バッチで、あるテキストファイル内の最後の\以下を削除して、その結果をバッチの値として利用したいです。 ●テスト条件 %TEMP%のtest.txt に以下のテキスト。 C:\Program Files\software\top xyz ●求める結果: 行末から最初の\以下の文字列を削除。この文字列をバッチファイルで使いたい。 C:\Program Files\software\ ●試したコマンド: なし 全体の流れとしては、バッチでquery取得したパスの不要な部分を削除して、求まったパス(のdirの結果を出力するために)を再度バッチで利用したいです。適切なコマンド・方法がありましたらお願いいたします。

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイルの正規表現を利用した文字列検索

    お世話になっております。 表題の件について、質問させてください。 『とあるファイルに記述されている文字列を一部抜き出して、 別ファイルとして保存する』というバッチファイルを作成していますが、 うまく抜き出すことができないため、ご教示いただければ幸いです。 例) ・filelist.txt .\aaa\aaa.txt .\aaa\bbb.txt 上記ファイルに対し、「.\aaa\aaa.txt」の一行のみ取り出した 「aaafile.txt」というファイルを生成したいと考えております。 現在、私が考えたコマンドは下記になります。 for /f %%A in ('findstr /r /c:"aaa[^\\].*" filelist.txt') do echo %%A > aaafile.txt このコマンドを実行すると、「.\aaa\bbb.txt」まで抽出してしまい、 意図通りとなりません。 初歩的なミスかもしれませんが、 何卒、よろしくお願いいたします。

  • バッチファイルについて

    ファイルの中身を抽出するバッチを作成しました。 そのバッチファイルを実行し、test.csvというファイル名をつけて出力できたんですが、出力パスも指定することは可能なんでしょうか? find.bat > test.csv

  • バッチファイルでファイルを置換

    バッチファイルでファイルを置換 あるバッチファイルをダブルクリックすると 特定のファイル名のファイルを置き換えするような事がしたいのです 例えば c:\aaa\test\a.ini d:\test\a.ini というファイルがあったとします どのフォルダ階層にあるかはわからないのですが testフォルダ以下にあるa.iniファイルを a.bakというファイルにリネームして バッチファイルのカレントに置いてあるa.iniファイルを そのフォルダにコピーする test\a.iniファイルがどこにも見つからなければ 該当ファイルが見つかりませんでしたので更新に失敗しました というようなメッセージを出す このようなプログラムをバッチファイルで作成する事は可能でしょうか? バッチファイルの基本コマンドは知っているのですが forとか高度な使い方はよくわからず教えて頂きたいのです よろしくお願い致します

専門家に質問してみよう