とっておきの手土産を教えて

batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。

例えば
aaa=0
bbb=0
ccc=0
ddd=0

という内容のテキストファイルが存在し、batファイルにて
aaa=0
bbb=1
ccc=1
ddd=0

というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。

宜しくお願いします。

A 回答 (5件)

こんな感じですか?


パスは適切に設定してください
----- a.bat -----
cd c:\foo\bar
if exist test.bak goto skip
copy test.ini test.bak
cscript a:\hogehoge\replace.vbs test.ini
:skip
----- a.bat ここまで -----

----- replace.vbs -----
Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
objFile.Close
strText = Replace(strText, "bbb=0", "bbb=1")
strText = Replace(strText, "ccc=0", "ccc=1")

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strText
objFile.Close
----- replace.vbs ここまで -----

参考URL:http://www.microsoft.com/japan/technet/scriptcen …
    • good
    • 1
この回答へのお礼

お世話になっております。

お陰で希望通りの処理を行う事ができました。
ありがとうございました。

お礼日時:2007/09/19 08:36

一般論としては, ファイルを書換えるためには一時ファイルが必要だと思います.


一時ファイルを使っていいなら, if とか for とかを駆使することでできると思いますが Windows2000 とか XP とかが必要です. Vista はほとんどさわってないので知らない.
    • good
    • 1

#2です。


A#2の回答をちゃんと読まれましたか?
すでに回答したようにテキストエディタ(WordPad)で「test.ini」を開いて適当に書き換え上書き保存するだけで問題なくできます。

補足に書かれたどの編集方法でも使えます。
>既に存在するファイル「test.ini」の内容の一部を編集し、同フォルダ内に同名にて保存します。
必ず「上書き保存」で保存してください。そうすればできます。

この回答への補足

oyaoya65様

お世話になっております。
質問が分かり難くてすみません。

仰る方法は理解しております。
当方が希望している方法は、テキストエディタでファイルを開いて編集するのではなく、バッチファイルを使用してテキストの内容を編集したいのです。

補足日時:2007/09/18 17:07
    • good
    • 0

Windows XP上でしょうか?


WindowsPCのテキストエディタで新規にテキストファイルを作成した場合、「名前をつけて保存」を使いますので拡張子として「*.txt」が付いてしまいますね。

最初から「*.dat」というファイル名のファイルであれば,
WordPadなどで開いて、編集し、「上書き保存」すればいいですね。
ファイルの中身がテキストファイルであれば、拡張子の如何にかかわらず拡張子を変更しないで、保存可能ですね。

WebサーバーやUnixサーバーにテキストファイル(「data.dat」,「.htaccess」、その他のテクストファイルや拡張子のないファイルなど)をダウンロードして、編集して、上書き保存してftpでアップロードすることをよくやっています。アップロードする際にもFFFTPではファール名を変更(*.txt→*.dat)できますので、最初にWinPCで*.txtでテキストファイルを作ってアップロード時にファイルの拡張子を変形することもできます。FFFTPではアップロード先のファイル名も変更できますのでその機能を使って拡張子を「*.dat」に変更してもいいですね。

この回答への補足

御返答ありがとうございます。
詳細な状況を記載しておりませんでしたので、説明させて頂きます。

環境:WinXP Pro SP2

状況:
既に存在するファイル「test.ini」の内容の一部を編集し、同フォルダ内に同名にて保存します。編集箇所はファイル内の一部の文字になります。

例:
aaa=0
bbb=0
ccc=0
ddd=0
以上の内容を

aaa=0
bbb=1
ccc=1
ddd=0
と編集します。

この場合、イコール以下のみを変更する事が望ましいのですが、該当する行を削除し、改めて文字列を挿入する方法でも構いません。また文字列挿入の場合には、挿入する内容を記載したテキストファイルを別途用意し、そちらの内容をコピー、挿入する方法でも構いません。

以上、宜しくお願い致します。

補足日時:2007/09/18 16:17
    • good
    • 0

値を持っていれば可能です。


単にechoを使ってファイルを作り直せばいいですが、
aaaの場所を特定して、=の後ろの数値をいじるとかは難しい気がします。

この回答への補足

早速の御返答ありがとうございます。
実際に行おうとしている処理はイコール以下の値を編集したいのです。

例えば、該当する行を一旦削除し、同じ場所に新たに行を挿入する方法でも構いません。

例:
aaa=0
bbb=0
ccc=0
ddd=0
という内容から「bbb=0」「ccc=0」を削除し、

aaa=0
ddd=0
として

新たに
bbb=1
ccc=1
を挿入し、

aaa=0
bbb=1
ccc=1
ddd=0
とする方法でも構いません。

補足日時:2007/09/18 15:59
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報