- 締切済み
Windowsコマンドラインで文字列置換する方法
Windowsでバッチファイルを作成し、テキストファイルの中の文字列を置換しようとしています。 下記のような内容のバッチファイルを作りました。 ーーーーーーーーー @echo off set fname=.¥change.txt set orgword=bbb set newword=222 copy %fname% orgfile >nul type nul >%fname% for /F %%I in (orgfile) do (set readline=%%I&& call :sub) del org file sub: call set outline=%%readline:%orgword%=%newword%%% echo %outline%>>%fname% go to :eof :end ーーーーーーーーー このバッチを利用して、 change.txt ーーーーーーーーー aaabbbccc ーーーーーーーーー を変換すると、 ーーーーーーーーー aaa222ccc ーーーーーーーーー となってくれますが、 ーーーーーーーーー <aaabbbccc/> ーーーーーーーーー を変換すると、 ーーーーーーーーー ECHO は <OFF> です。 ーーーーーーーーー となってしまいます。 これを、 ーーーーーーーーー <aaa222ccc/> ーーーーーーーーー としたい時にはどのようにしたら良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rabbit_cat
- ベストアンサー率40% (829/2062)
windowsのコマンドラインでbatよりも、ちょっとだけ高級なことをやりたいなら、 WSH(Windows Script Host)でやるのがよいです。 VBScriptかJavascriptが使えます。正規表現を使った置換なんかもできます。
- Cupper-2
- ベストアンサー率29% (1342/4565)
DOSと言うか、使用しているOSのバージョンなどの問題で 使えない環境もあるので参考ということで。。。 EDLINを使う ラインエディタなんですけど、これ、結構優秀で外部からコマンドを指定して起動できるんです。 そこで、コマンドを記述したテキスト(例:CMND.TXT)を用意して、対象のテキスト(例:example.txt)を edlin exsmple < cmnd.txt のようにして使うんですけどどうでしょう。 コマンドの種類や動作については http://support.microsoft.com/kb/67706/ja などを参考にしてみてください。 ※ Windows7 64ビット版にEDLINは含まれませんし使えません。 ほかの64ビット版でも同様と思われます。 ・・・そんなわけで自分の環境では使えないのでコマンド記述の確認ができません。 あしからず・・・。
- nerimaok
- ベストアンサー率34% (1125/3221)
sedとかgrepを導入しちゃうなぁ・・・
補足
早速のご回答ありがとうございます。 自分のPCではないため、なるべく環境に変更を加えずに実施できたらと思い、バッチを作っています。 ですが、良い解決策がなければ、 ・sed for Windows等の導入を検討。 ・VBが動く環境のためスクリプトか簡単なexeを作って対応 としたいと思います。