- ベストアンサー
batファイル処理でのテキストファイルの内容を編集
batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。 例えば aaa=0 bbb=0 ccc=0 ddd=0 という内容のテキストファイルが存在し、batファイルにて aaa=0 bbb=1 ccc=1 ddd=0 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。
- みんなの回答 (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 ここまで -----
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
一般論としては, ファイルを書換えるためには一時ファイルが必要だと思います. 一時ファイルを使っていいなら, if とか for とかを駆使することでできると思いますが Windows2000 とか XP とかが必要です. Vista はほとんどさわってないので知らない.
- oyaoya65
- ベストアンサー率48% (846/1728)
#2です。 A#2の回答をちゃんと読まれましたか? すでに回答したようにテキストエディタ(WordPad)で「test.ini」を開いて適当に書き換え上書き保存するだけで問題なくできます。 補足に書かれたどの編集方法でも使えます。 >既に存在するファイル「test.ini」の内容の一部を編集し、同フォルダ内に同名にて保存します。 必ず「上書き保存」で保存してください。そうすればできます。
補足
oyaoya65様 お世話になっております。 質問が分かり難くてすみません。 仰る方法は理解しております。 当方が希望している方法は、テキストエディタでファイルを開いて編集するのではなく、バッチファイルを使用してテキストの内容を編集したいのです。
- oyaoya65
- ベストアンサー率48% (846/1728)
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 と編集します。 この場合、イコール以下のみを変更する事が望ましいのですが、該当する行を削除し、改めて文字列を挿入する方法でも構いません。また文字列挿入の場合には、挿入する内容を記載したテキストファイルを別途用意し、そちらの内容をコピー、挿入する方法でも構いません。 以上、宜しくお願い致します。
- izayoi2004
- ベストアンサー率14% (22/155)
値を持っていれば可能です。 単に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 とする方法でも構いません。
お礼
お世話になっております。 お陰で希望通りの処理を行う事ができました。 ありがとうございました。