• ベストアンサー

batファイル処理でのテキストファイルの内容を編集

batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。 例えば aaa=0 bbb=0 ccc=0 ddd=0 という内容のテキストファイルが存在し、batファイルにて aaa=0 bbb=1 ccc=1 ddd=0 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 777_kenyu
  • ベストアンサー率68% (22/32)
回答No.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/scriptcenter/resources/qanda/feb05/hey0208.mspx
ricefield0522
質問者

お礼

お世話になっております。 お陰で希望通りの処理を行う事ができました。 ありがとうございました。

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

一般論としては, ファイルを書換えるためには一時ファイルが必要だと思います. 一時ファイルを使っていいなら, if とか for とかを駆使することでできると思いますが Windows2000 とか XP とかが必要です. Vista はほとんどさわってないので知らない.

  • oyaoya65
  • ベストアンサー率48% (846/1728)
回答No.3

#2です。 A#2の回答をちゃんと読まれましたか? すでに回答したようにテキストエディタ(WordPad)で「test.ini」を開いて適当に書き換え上書き保存するだけで問題なくできます。 補足に書かれたどの編集方法でも使えます。 >既に存在するファイル「test.ini」の内容の一部を編集し、同フォルダ内に同名にて保存します。 必ず「上書き保存」で保存してください。そうすればできます。

ricefield0522
質問者

補足

oyaoya65様 お世話になっております。 質問が分かり難くてすみません。 仰る方法は理解しております。 当方が希望している方法は、テキストエディタでファイルを開いて編集するのではなく、バッチファイルを使用してテキストの内容を編集したいのです。

  • oyaoya65
  • ベストアンサー率48% (846/1728)
回答No.2

Windows XP上でしょうか? WindowsPCのテキストエディタで新規にテキストファイルを作成した場合、「名前をつけて保存」を使いますので拡張子として「*.txt」が付いてしまいますね。 最初から「*.dat」というファイル名のファイルであれば, WordPadなどで開いて、編集し、「上書き保存」すればいいですね。 ファイルの中身がテキストファイルであれば、拡張子の如何にかかわらず拡張子を変更しないで、保存可能ですね。 WebサーバーやUnixサーバーにテキストファイル(「data.dat」,「.htaccess」、その他のテクストファイルや拡張子のないファイルなど)をダウンロードして、編集して、上書き保存してftpでアップロードすることをよくやっています。アップロードする際にもFFFTPではファール名を変更(*.txt→*.dat)できますので、最初にWinPCで*.txtでテキストファイルを作ってアップロード時にファイルの拡張子を変形することもできます。FFFTPではアップロード先のファイル名も変更できますのでその機能を使って拡張子を「*.dat」に変更してもいいですね。

ricefield0522
質問者

補足

御返答ありがとうございます。 詳細な状況を記載しておりませんでしたので、説明させて頂きます。 環境:WinXP Pro SP2 状況: 既に存在するファイル「test.ini」の内容の一部を編集し、同フォルダ内に同名にて保存します。編集箇所はファイル内の一部の文字になります。 例: aaa=0 bbb=0 ccc=0 ddd=0 以上の内容を aaa=0 bbb=1 ccc=1 ddd=0 と編集します。 この場合、イコール以下のみを変更する事が望ましいのですが、該当する行を削除し、改めて文字列を挿入する方法でも構いません。また文字列挿入の場合には、挿入する内容を記載したテキストファイルを別途用意し、そちらの内容をコピー、挿入する方法でも構いません。 以上、宜しくお願い致します。

回答No.1

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

ricefield0522
質問者

補足

早速の御返答ありがとうございます。 実際に行おうとしている処理はイコール以下の値を編集したいのです。 例えば、該当する行を一旦削除し、同じ場所に新たに行を挿入する方法でも構いません。 例: 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 とする方法でも構いません。

関連するQ&A

  • batファイル処理でのテキストファイルの内容変更

    batファイル処理のみにてテキストファイルの内容を変更する事は可能でしょうか。 例えば aaa=1111 bbb=2222 ccc=3333 ddd=4444 という内容のテキストファイルが存在し、batファイルにて aaa=1111 bbb=2222 ccc=5555 ddd=4444 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • テキスト処理のシェルプログラム

    UNIXシェルもしくはPerlでテキスト処理のシェルスクリプト を作成したいのですがご教授お願いします 1000行あるテキストファイルを 2行単位で区切り2行単位で横一列へ置換しテキストへ出力したいのですが 例 処理前 aaa bbb ccc ddd eee fff 処理後 aaa,ccc,eee bbb,ddd,fff ご教授よろしくお願いします

  • テキストのバッチ処理について

    【テキストファイルをバッチ処理にて書き換え】 C:\Program Files\ABC\X1\ドキュメント.txtの内容をバッチ処理で書き換えたいのですが、そのような事はかのうでしょうか? また、可能な場合どのように書けばいいのでしょうか? 「テキストの内容」 ------------------------------------- A設定 aaa-bbb-00-11 B設定 bbb-ccc-00-22 C設定 ccc-eee-00-33 ------------------------------------- 上記の内容で、22を55にバッチ処理で書き換えたい。「B設定 bbb-ccc-00-22」→「B設定 bbb-ccc-00-55」 よろしくお願いします。

  • C言語による「テキストファイルの読み書き(fprintf)」について

    C言語による「テキストファイルの読み書き(fprintf)」について質問です ずぶの初心者ですが、既知のファイルの1行目に指定した文字列を付加させるプログラムを作りたいと思っています。 以下のように作りました。 ------------------------------------------------------------ #include <stdio.h> int main(void) { FILE *fp; fp = fopen("test.csv","r+"); fprintf(fp,"コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56\n"); fclose(fp); return 0; } ------------------------------------------------------------ このとき「test.csv」の内容が以下のようであったとします。(容量は1MBくらいです。) 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj この状態でプログラムをコンパイルして実行すると、「test.csv」の内容が以下のようになってしまいます。(一行目が消える) AAA,BBB,CCC,DDD,EEE 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj またcsvの行が増える度に妙な挙動になっていきます・・・(一行あいたり、先頭行が5行ほど消えたり) 希望する動作としては コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj のようになるようにしたいのですがどのようにすればよいのでしょうか。 よろしくお願いします。 (使用ソフト:Borland C++ Compiler, Cpad) 参考にしたサイトの項目:http://homepage3.nifty.com/mmgames/c_guide/17-01.html

  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • 【エクセル】空セルを埋める方法

    お世話になります。 下記のような表があります。 1行目:AAA,BBB,CCC,DDD 2行目:空セル,BBB,CCC,DDD 3行目:空セル,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:空セル,BBB,CCC,DDD ・・・ こんなパターンの行が結構あります。 空セル部分を下記のように埋めたいのですが 1行目:AAA,BBB,CCC,DDD 2行目:AAA,BBB,CCC,DDD 3行目:AAA,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:aaa,BBB,CCC,DDD てっとり早く埋める方法ありませんか? いまは、【ctrl+↓】 ⇒【↑】⇒【ctrl+D】を延々繰り返しています。 宜しくお願いいたします。

  • vbs データ登録用にcsvを編集

    vbsで以下のように編集したいです。 よろしければコードのご教示宜しくお願い致します。 <編集前>    A     B      C     D 1 #氏名   メアド1   メアド2  メアド3...........メアド10 2 田中太郎 aaa@aaa.jp  3 田中太郎 bbb@bbb.jp ccc@ccc.jp 4 田中太郎 aaa@aaa.jp       ddd@ddd.jp <編集後>    A     B      C     D     E 1 #氏名   メアド1   メアド2   メアド3  メアド4........メアド10 2 田中太郎 aaa@aaa.jp bbb@bbb.jp ccc@ccc.jp ddd@ddd.jp <編集内容> ・氏名をキーに同一の氏名があった場合に、一行にメアドをまとめる。 ・一行に表示するメアド数の上限は、10個(メアド10)として、それ以上は削除 ・メアドが被った場合は、置換する。(B列のaaa@aaa.jpを指す) ・メアド10まで埋まらなかった場合は、メアド10(K列)まで","(カンマ)を一つのセルごとに出力する。 説明が下手ですみません。 条件不足等ございましたらお知らせください。

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • 外部パラメータを使用したファイルの作成・書き込み

    テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

    • ベストアンサー
    • Perl
  • テキストファイルの任意の文字以降の文字列を削除したい

    test.txt AAA+あいうえお BBB+かきくけこ CCC+さしすせそ DDD+たちつてと EEE+なにぬねの 上記(test.txt)のようなテキストファイルから、各行の+以降の文字列を削除して、 以下(result.txt)のようなテキストファイルを生成させるプログラムを作成させたいです。 result.txt AAA BBB CCC DDD EEE このようなプログラムを作るにはどのようにすればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java