• 締切済み

Windowsのバッチファイルを利用しtxtファイルの指定のした位置に文字を追加する方法

現在、下記内容のファイル(test.txt)指定した行に指定文字を追記できる方法を探しております。 【test.txt内容】 [test1] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test2] [test4] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test5] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: end 【追記したい内容】 test.txtの"[test2]"行の下の行に以下の文字を追記したいです。 [test3] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: 指定行に追記するというコマンド自体はないと思い、batやwshの本などを読んではいるのですがなかなか良い考えが浮かびません。 ご教示の程よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

BATでも可能ですが、その場合、入力ファイル中の空行は削除されます。 for /f "delims=" %%A in (infile.txt) do (  echo %%A  if "%%A"=="[test2]" (   echo [test3]   echo :::::::::::::::::::::   echo :::::::::::::::::::::  ) )>outfile.txt

  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.1

[test4]の行を[test3]~[test4]の複数行に置換すると考えたらどうでしょう? この動作なら色々実現手段はあるようですけど。 http://www.google.co.jp/search?q=%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB+%E7%BD%AE%E6%8F%9B&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a 中にはwshでやる方法を載せているページもありましたので自作するのであれば参考になるかも知れません。

関連するQ&A

  • batやvbsでテキストファイルの何行目に指定の文字を追記する方法

    現在、下記内容のファイル(test.txt)指定した行に指定文字を追記できる方法を探しております。 【test.txt内容】 [test1] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test2] [test4] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: [test5] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: end 【追記したい内容】 test.txtの"[test2]"行の下の行に以下の文字を追記したいです。 [test3] :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: 指定行に追記するというコマンド自体はないと思い、batやwshの本などを読んではいるのですがなかなか良い考えが浮かびません。 ご教示の程よろしくお願いいたします。

  • *.txtファイルの最終行だけ参照して、バッチファイルを作りたい

    *.txtファイルのなかに"test"という文字をfindstrコマンド又はfindコマンドで探して、出力したいのですが、全ての行を参照して出力するのではなくて、最終行だけを参照して出力するといったバッチファイルを作成したいのですが、どうやればいいのでしょうか? どうぞよろしくお願いいたします。

  • DOSバッチファイルへの引き渡し方法

    次のような操作をしたいのですが。 御教示下さい。 操作の流れ テキストファイルに一文字出力する CMD1 > a.txt テキストファイルa.txtには、一文字しかはいらない 1やa など そのa.txt の内容を判断して バッチファイルb.bat内で分岐処理したい   b.bat 内  if 'a.txtの内容' により分岐処理

  • VB2008 ファイルから指定位置の文字を読み込む方法??

    D:\Temp\Test.txt abc123あいう亜伊宇 [イミディエイトウインドウ] ? FileSeek("D:\Temp\Test2.txt", 1) "a" ? FileSeek("D:\Temp\Test.txt", 7) "あ" ? FileSeek("D:\Temp\Test.txt", 8) "あ" 今、FileStream の Seek メソッドを利用した指定位置の文字を1文字だけ戻す関数を作成。 なんとか動作だけはしています。 そこで、私が質問したいのは日本語の扱いのエレガントな方法です。 Seek メソッドでは2バイト文字の1バイト目と2バイト目とを読むケースが発生します。 私は、いずれの場合も"□・"とかではなく"あ"を戻させたいと思っています。 そのために私が考えた方法は次ようです。 ' -------------------------------- ' 指定の位置より2バイト読み込む ' -------------------------------- fs.Seek(p - 1, SeekOrigin.Begin) fs.Read(Buf, 0, Buf.Length) C = ec.GetString(Buf) ' ------------------------------------------ ' 指定の位置より1つ戻して2バイト読み込む ' ------------------------------------------ If p > 1 Then   fs.Seek(p - 2, SeekOrigin.Begin)   fs.Read(Buf, 0, Buf.Length)   D = ec.GetString(Buf) End If ・・・・・ ・・・・・ FileSeek2 = If(Len(D & "") = 1, D, Left(C, 1)) 仮に、最初の読み込みで3バイトを読み込んで2バイト目が何なのかを判別できると・・・。 そうすれば、2度読みする必要はないと思います。 そこで、その方法をご存じであればコードを含めて教えて頂ければ幸いです。

  • バッチファイルでテキストファイルの文字列を取得したい

    すみません、どなたか教えて下さい。 バッチファイル(test.bat)内で、他のテキストファイル(ok.txt)の文字列を取得したいです。 ok.txtは 20070614 TEST となってます。 この2つの文字列をそれぞれで取得する方法を教えて下さい。 よろしくお願い致します。

  • テキストファイル内の指定文字が含まれる行以下を削除

    いつもお世話になります。 以下、バッチ(bat)で可能でしょうか? テキストファイル内(sample.txt)に指定文字(SA2:という文字)が必ず1行含まれていて 2行以上にはなりません。 SA2が含まれる行以下を削除し、sample1.txtという名前で保存したいです。 findstr SA2 でSA2が含まれる行を調べられるのいですが、その行を含む以下の行を 削除するというのが、どのように考えたらいいのかわかりません。 お力添え頂けますでしょうか? 宜しくお願い致します。

  • バッチファイルで「,]区切りの文字を抜き出したい

    現在、バッチを作成しているのですが、txtファイルからの文字の抜き出しがうまくいきません。 findstr /b "aaa" C:\tmp\test.txt 上記で行毎では抜き出せるのですが、それから[ , ]区切り毎の抜き出し方がわかりません。 [test.txt] aaa,bbb,ccc,ddd eee,ffffff,ggggg,hhhh   ・   ・   ・ 下記のようにそれぞれ変数に代入したいと考えております。 aaaで実行する場合。 hoge1=aaa hoge2=bbb hoge3=ccc hoge4=ddd eeeで実行する場合。 hoge1=eee hoge2=fffff hoge3=ggggg hoge4=hhhh 変数への代入はfor文を使用しようと考えております。 追記いたしますと、各hoge~は先頭の[hoge1]を除き、行毎に文字数が異なり、行数は100行を超えますので、なんとかバッチの方で割り当てたいと考えております。 お知恵をよろしくお願いいたします。

  • バッチファイルで文字列を順番問わずマッチさせたい

    バッチファイルで、2個以上の文字列を順番問わずマッチさせたいと考えています。 例えば、 「111 222 333 444 555 666 777」 という内容のテキストファイルがあったとして、 sedコマンドを使って 「222」と「444」と「666」が この順番で含まれている行を置換したい場合、 sed -e "s/.*222.*444.*666.*/置換後の文字列/" in.txt > out.txt とすれば、問題なく置換されると思います。 しかし、上記の例では、 「777 666 555 444 333 222 111」 という内容のテキストファイルは置換されません。 文字列の順番を問わず、 「222」と「444」と「666」が含まれている行ならば、 その行を置換する、といった事は出来ないでしょうか。 sedコマンド以外でも構いませんので、何かいい方法をご存知の方がおられましたらお教え頂けないでしょうか。

  • ImageMagickでのバッチファイル作成の方法

    今現在Windows SP2環境にてImageMagickを使用しております。 そこで、下記のコマンドを記述したバッチファイルを作成したい と思っております。 <コマンド> convert -density 300 +antialias hoge.eps hoge.png そこで以下のようなバッチファイルを作成しました。 ------以下、バッチファイルtest.batの内容------- @echo off convert -density 300 +antialias hoge.eps hoge.png -------------------------------------------------- しかし、実際に「test.bat」と打ってenterを押しても 何も表示されず、ファイルも作成できておりません。 バッチファイルではなく、コマンドプロンプトに convert -density 300 +antialias hoge.eps hoge.png と打つとうまく作成できます。Pathの設定もしっかり 出来ておりますのでバッチファイルの記述の仕方に 問題があるのではないかと考えております。 どのように直せばうまくいくか分かりますでしょうか? どうかご教示の程よろしくお願い致します。

  • DOS 特定の文字列を含むファイルのみの抽出方法

    C直下に2つのテキストファイル「A.txt」「B.txt」が存在するとします。 Aには「Start」、Bには「Second」という文字列が含まれているとします。 これらのテキストを、BATを使って『テキスト内に特定の文字列が含まれているファイル』のみをDOSプロンプト上に表示する方法をご教示願います。 ■想定するコマンド実行結果 ・Start.BATを実行→DOSプロンプトにて「A.txt」のみが表示する。 ・Second.BATを実行→DOSプロンプトにて「B.txt」のみが表示する。 よろしくお願いします。

専門家に質問してみよう