- 締切済み
【コマンドプロンプト】テキストファイル内の文字列置換
こんにちは。 コマンドプロンプトのバッチファイルでテキストファイル内の文字列の置換を行いたいと考えております。 例えば以下のような内容があった場合、 --開始-- ABCDEFG1111 ABCDEFG ABCDEFG1111 HIJKLMN --終了-- バッチファイル処理結果として 1111 ABCDEFG 1111 HIJKLMN という結果を別ファイルに出力したいのです。 制限としては、sed,awkなどのwindows上で稼動するツールがあるようですが それらは使用できません。 どなたかご存知の方教えていただけないでしょうか よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- pita-gora
- ベストアンサー率70% (102/145)
例として挙げておられる内容にもう少し補足がほしいです。 1) 入力ファイルに存在する ABCDEFG1111 を 1111 に置き換える 2) 入力ファイルのスペースで区切られた前半部分を (ABCDEFG1111でなくても) 1111 に置き換える 3) 入力ファイルのスペースで区切られた前半部分にある 文字列(ABCDEFG1111でなくても)の英字部分を削除して数字だけに置き換える どれがお望みですか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
今どきは、#1の方の言われるようにWSHを使うべきのような気がしますがあえてコマンドにこだわってみました。 edlinを利用して コマンドのファイルとして CMD.TXTを以下のように作って CMD.TXT--------------------- 1,RABCDEFG1 1 E ---------------------------- 編集したいファイルがdata.txtだとすると edlin data.txt <cmd.txt の様にすると 結果がdata.txtに得られます。 元のファイルはdata.bakのような形で保存されるので、適当にファイル名の変更などをすれば良いです。 CMD.TXTの 1,RABCDEFG1 1 は 1(一行目から),(最後まで)R(置き換える) 検索文字列CTRL+Z置き換える文字列 のようになります。CTRL+Z(制御文字)がにゅうりょくできるエディタでコマンドを作成する必要があります。 edlinは、MS-DOSコマンドでいわゆるラインエディタと言われるもので、XPにも互換性のために残されていて使用することができます。 低機能なsedのように使うことができます。
- you-m
- ベストアンサー率58% (190/327)
残念ながら、Windowsの標準コマンドラインツールで、テキスト内の文字列が編集できるものはありません。 CMD.EXEのFOR分や変数置換等を使ってかなり複雑なことを行えば、不可能ではないかもしれませんが、あまり現実的ではないと思います。 このような機能をバッチファイル的に行いたい場合は、普通はWSHで動くスクリプトを使うことになるでしょう。 少なくともWindows2000やXPであれば、標準で使えますし、cscript.exeを使うことでバッチの中から普通に呼び出せます。 参考までに、以前にWSHについて説明した回答をのせておきます。 http://okweb.jp/kotaeru.php3?q=244284