プロが教えるわが家の防犯対策術!

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/>
ーーーーーーーーー
としたい時にはどのようにしたら良いでしょうか?

A 回答 (3件)

windowsのコマンドラインでbatよりも、ちょっとだけ高級なことをやりたいなら、


WSH(Windows Script Host)でやるのがよいです。
VBScriptかJavascriptが使えます。正規表現を使った置換なんかもできます。
    • good
    • 2

DOSと言うか、使用しているOSのバージョンなどの問題で


使えない環境もあるので参考ということで。。。

  EDLINを使う

ラインエディタなんですけど、これ、結構優秀で外部からコマンドを指定して起動できるんです。
そこで、コマンドを記述したテキスト(例:CMND.TXT)を用意して、対象のテキスト(例:example.txt)を

 edlin exsmple < cmnd.txt

のようにして使うんですけどどうでしょう。
コマンドの種類や動作については
 http://support.microsoft.com/kb/67706/ja
などを参考にしてみてください。


※ Windows7 64ビット版にEDLINは含まれませんし使えません。
  ほかの64ビット版でも同様と思われます。
  ・・・そんなわけで自分の環境では使えないのでコマンド記述の確認ができません。
  あしからず・・・。
    • good
    • 0

sedとかgrepを導入しちゃうなぁ・・・

この回答への補足

早速のご回答ありがとうございます。
自分のPCではないため、なるべく環境に変更を加えずに実施できたらと思い、バッチを作っています。
ですが、良い解決策がなければ、
・sed for Windows等の導入を検討。
・VBが動く環境のためスクリプトか簡単なexeを作って対応
としたいと思います。

補足日時:2013/11/27 18:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!