• ベストアンサー

VBスクリプトにて検索した文字を出力

VBSによりコンピュータ名やIPアドレスやプロキシなどの情報を、PC.txtに出力させました。 以下のツールを作りたいのですが、ご教示いただけないでしょうか。 まずC:\PC配下に上記PCx.txtを複数格納しております。(内容はそれぞれのPCのもの) ツール実行後、テキストファイルを一つ一つ読み込み、 "IPアドレス"という検索文字に該当した行をその検索文字列とスペースを省いた値(xxx.xxx.xxx.xxx)を Csvに出力させます。 次に同じように他の出力したい項目を検索していきます。 イメージとして(IPアドレス,, , , ,・・・)とcsvに出力していきます。 次に2個目のテキストファイルを読み、次の行に同じく出力していきます。 最終的にテキストファイル数=CSVの行数となるようにしたいと思います。 ある場所のテキストの文字を検索する、そして必要部分のみCSVに出力するという方法のイメージがつきませんのでご教示頂けますでしょうか。

  • craftx
  • お礼率48% (388/806)

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>ツール実行後、テキストファイルを一つ一つ読み込み、 >イメージとして(IPアドレス,, , , ,・・・)とcsvに出力していきます。 とのことですが、 >コンピュータ名やIPアドレスやプロキシなどの情報を、 >PC.txtに出力 させる時点で CSV に書き出してしまう方が簡単なことはありませんか?  一応、以下に、お尋ねのような内容で動く コード は書いてみましたが、ややこしいので、1行ずつよくお考えになってみてください。  なお、見た目を判りやすくするために、インデント を 全角スペース にしておりますので、コピペ なさった後に、半角スペース 2ヶ分くらいに置換してからお試しください。  コード 作成に当たっては、下記などを参考にさせていただきました。 ●VBScript(VBスクリプト)でDIRするには? http://d.hatena.ne.jp/chaichanPaPa/20061217/1166315768 ●ファイル全体を読み込み、その結果の文字列を返します。 http://homepage2.nifty.com/pasocon/nyumon/textstream/readall.html ●テキストファイルへの書きこみ http://www.happy2-island.com/vbs/cafe02/capter00207.shtml '------------------------------------------ Set RE = CreateObject("VBScript.RegExp") With RE   Set fs = CreateObject("Scripting.FileSystemObject")   Set f = fs.GetFolder("C:\PC\")   Set fc = f.Files   Set objOutFile = fs.OpenTextFile("C:\PC\hoge.csv", 8)   For Each f1 In fc     .Pattern = "PC.*.txt"     If .Test(f1.Name) Then       Set objTS = fs.OpenTextFile("C:\PC\" & f1.Name)       buf = objTS.ReadAll       .Global = True       .Pattern = ".*コンピュータ名.*"       buf1 = .Execute(buf)(0).Value       buf1 = Replace(Replace(buf1, ": ", ""), Chr(13), "")       buf1 = .Execute(buf1)(0).Value       objOutFile.Write "コンピュータ名," & buf1 & ","       .Pattern = ".*IPアドレス.*"       buf1 = .Execute(buf)(0).Value       .Pattern = "\d.*\d"       buf1 = .Execute(buf1)(0).Value       objOutFile.WriteLine "IPアドレス," & buf1       objTS.Close     End If   Next End With objOutFile.Close

craftx
質問者

お礼

ありがとうございます。 とても参考になりました。 また別途部分的に質問させて頂きますので、 よろしくお願いいたします。

関連するQ&A

  • 文字検索結果のリスト化で困っております

    文字検索の質問です。どなたか助けてください。複数のテキストファイルの中から指定した文字(2種類)を検索して、抽出した文字の行内容をcsvリストで作りたいのですが、方法が分かりません。秀丸エディタでgrepを使用すると検索できることがわかりましたが、ファイル名までの表示で指定した文字が抽出できずEXCEL化の方法がわからないのです。 日時=xx時cc分 利用者=YAMADA このような記述があるxxx.txtが1000個あります。1000個のテキストファイルから日時と利用者を抽出してYAMADAが何件あるかEXCEL化して利用率を調べたいのです。どうぞよろしくお願い致します。

  • VB.netで検索した文字の後の文字列を取得

    VB.net(2010)でテキストファイルから特定の文字を検索してその後にある文字列を取得するにはどのようにすれば良いでしょうか。 【具体例】 C:\testフォルダ以下にある複数のtextファイルから"aaa"の文字を検索して、その後にある"xxx"を取得する。(同じ行にある文字列) 【textファイルの中身】 111 aaa xxx 222 ご教示のほど、よろしくお願いします。

  • C++での検索と出力について

    C++を勉強しています。 今回やりたいのは以下のような作業をしたいです。 例えば... (1)text.txtを読み込む。 (2)ファイル内の『あいうえお』を検索。 (3)次の行と、そこから8カラム分空白を開けた後に『あいうえお』が含まれているかを確認。 (4)続いて『かきくけこ』を検索。 (5)次の行と、そこから8カラム分空白を開けた後に『かきくけこ』が含まれているかを確認。 (6)(3)、(4)と同じ作業を行う。 (7)もし無ければ"出力内容"のようにエラーメッセージを出力。 (8)『はひふへほ』を見つけたら終了。 【テキスト内容例】 ********************あいうえお******************** **あいうえお********あいうえお******************** ********************かきくけこ******************** **かきくけこ********かきくけこ******************** ********************さしすせそ******************** **さささささ********さささささ******************** ********************はひふへほ******************** 【出力内容】 "あいうえお"は合っています。 "かきくけこ"は合っています。 "さしすせそ"は違います。 結構面倒かと思いますが、このような作業を練習も兼ねてやってみたいのです。出来るのか検討が付かなくて。 (1)、(2)までは出来たのですがそこからが出来ないもので。 ぜひ教えていただきたいです。 皆さん教えてください。お願いします。

  • 検索した文字列がある行を検索するには

    OPEN "A.txt" QWER gohjoij OPEN "B.txt" OPEN "QWERT" Write A.txt jortyu end と書かれたテキストファイル(ファイル名を"ABC.txt"とする。)があるとします。これを 1.OPEN "*.*"(*=ワイルドカード)という文字列の*.*のみに絞る 2."1."の内" "の中に、"."が無い文字列は無視する うえでリッチテキストボックス1に出力するようにします。リッチテキストボックス1には A.txt B.txt と出力されました。これをさらに[A.txt B.txt]がある行全体を、 1.別のリッチテキストボックス(リッチテキストボックス2)に出力する やり方がわかりません。この例だと、リッチテキストボックス2には OPEN "A.txt" OPEN "B.txt" Write A.txt jortyu と出力したいです。今のスキルだと到底作れそうに無いので、どなたか教えてください。

  • VBスクリプトのコマンドについて

    テキストファイルを1行ずつ読み取り、必要な箇所のみを出力するプログラムを作成しています。 VBスクリプトで以下のことをする構文を教えてください。 1、ある1行から、ある文字列とスペースを除く方法    例(名前 abc → 名前を除きたい場合は「abc」を出力したい。) 2、ある1行から、ある文字列以降を抽出する方法   例(名前:abc →:以降をとりたい場合は「abc」を出力したい。) 3、2に加えて次の行も出力したい場合。   例(abc +次の行全部を出力)

  • Perlの文字列削除とcsv出力の方法について

    現在、Perlを用いてtxtファイルから必要なデータだけを取り出し、それをcsv ファイルに出力したいと考えております。 Perlはほとんど触ったことがなく、色々と勉強しながら行っているのですが、期 日が迫っているという事情もあり質問させていただきます。 txtファイルには以下のような文が1000行ほどあります。 *○ △ /△/△/△/△/○.txt, ○|○): ○ ○,△:任意の数字、または文字列です。 この内、"○"のものだけを一つ一つ分けてcsvに出力したいのです。 つまり○は4つありますが、出力する際は1つ目の"○"を1行目に、2つ目の"○"を2行 目にといった形にしたいです。 そして、それが1000列分あるということになります。 上手く△のものだけを除外し、○だけを抽出する方法はあるでしょうか? どなたかよい方法をご存知のかたいらっしゃいましたら、教えていただけると幸 いです。 エクセルで行うということも考えましたが、htmlファイルが入力ファイルとなる可能性もあるためPerlで行うことにしました。

    • ベストアンサー
    • Perl
  • 同一ファイルからの文字列検索

    お世話になります。 今、ファイル処理を勉強しています。 hoge.txtに文字列が格納されています。 (hoge.txt) --------------------- suzuki yamada kimura tanaka ito suzuki kimura --------------------- hoge.txtの上の行より、下に検索を行い、 一致した場合、printf("HIT\n");と出力します。 動きは、 suzukiを検索文字列し、yamada~kimuraまで検索を行い、 もしヒットした場合、出力表示します。 suzukiが検索終了すると、次のyamadaを検索文字列として、 kimura~kimuraを検索します。 この動作を最後の行まで行えば終了です。 下記のfgets()で1行分を取得してからの 次の行への移行がわかりません。 FILE *fp; char name[256]; if( (fp =fopen( "hoge.txt", "r )) == NULL ){ return 0; } while( fgets(name, sizeof(name), fp ) != NULL ){ //ここで次の行以下とstrstr()で比較を行う } お手数をお掛けしますが、よろしくお願い致します。

  • 複数のファイルを読み込み、1つのファイルとして出力する方法。

    Nakanoです。いつもお世話になっております。 例えばテキストファイルを2つ用意し、1つのテキストファイルとして 出力したいのですが、いまいちやり方が分かりません。出来るのかどうかも 分からないです。(汗) 下にサンプルデータがあります。取り合えず「in1.txt」「in2.txt」 を最終的に『out.txt』の様に仕上げたいのですが… # =in1.txt AAAAA BBBBB CCCCC DDDDD 1,000 2,000 3,000 4,000 1,001 2,002 3,003 4,004 1,010 2,020 3,030 4,040 1,100 2,200 3,300 4,400 =in2.txt EEEEE FFFFF GGGGG HHHHH 5,000 6,000 7,000 8,000 5,005 6,006 7,007 8,008 5,050 6,060 7,070 8,080 5,500 6,600 7,700 8,800 # =out.txt AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF GGGGG HHHHH 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 1,001 2,002 3,003 4,004 5,005 6,006 7,007 8,008 1,010 2,020 3,030 4,040 5,050 6,060 7,070 8,080 1,100 2,200 3,300 4,400 5,500 6,600 7,700 8,800 # ・このデータはタブで区切っています。カンマはない場合もあります。 ・ファイルの中のそれぞれの文字列の数は固定です。行数も固定です。  各文字列の中の文字数はランダムです。  COPYコマンドを利用しても考えてみたのですが、後ろに続いちゃって  上手くいかなかったです。(笑)  Perlだと1つ目のファイルの1行目を配列に入れて、次に2つ目の  ファイルの1行目を配列に入れて、これを一旦出力して、同じ手順の  様な事を行を2行目、3行目、4行目、、とずらして繰り返す。って  感じでイメージしているのですが、どの様にソースを組めばいいのか  分かりませんでした。  どなたかご教授いただけないでしょうか? 宜しくお願い致します。

  • CSVからtxtに変換してのですが、ある行を境にちゃんとできない。

    (前置き) Outlook Express(以降OE)のアドレス帳をNOTESのアドレス帳にImportするときに、まず最初にOEのアドレス帳をExportします。 できたのがCSVファイルです。 このCSVファイルを拡張子を変更してtxtファイルに変更する必要があるので、そうしました・・・。 (症状) このtxtファイルですが、ある行から(具体的にはアドレス帳の16行目の人)から、",(コンマ)"が出なくなりました。 具体的には、 ,,,xxx@xxx.co.jp,,,,,,,,,,,,,,,,,,,,,,, が正しいのですが、ある行を境にして、 ,,,xxx@xxx.co.jp となってしまいます。 すごい不思議です。 手動でこのコンマを打てばいいのですが、なんせ600人分が後者になっていますので、かなり大変なんです。 なぜコンマがなくなるのでしょうか?どなたか教えて下さいませ。

  • 2つのファイルを用いた文字列置換(削除)の方法

    こんにちは。 テキストファイルA.txtに、検索したい文字列を1行ずつ入れておき、別のテキストファイルB.txtのうち、A.txtにある文字が含まれている行を削除するという作業をしたいです。 例えば A.txt AAA BBB B.txt hoge hogeAAAhoge hogeBhoge hogeBBBhoge の場合、 hoge hogeBhoge を出力させたいです。 このような処理ができる方法はないでしょうか?(コマンドやプログラム等)