• 締切済み

VBscript

VBscript  テキストファイルから特定のキーで検索を掛けて、ひっかかった行に記載された 文字列を別ファイルに転記したいのですがヘルプミー。

みんなの回答

回答No.2

回答される方がいらっしゃらないようなので。。。 InStr()を使えばいいのかな?と思います。 InStr([検索開始位置, ]検索対象文字列, 検索キー文字列 [, 検索モード]) で、戻り値は(検索キー文字列が検索対象文字列内で見つかった場合)見つかった位置です。 コードは以下のような感じですかね。 ==== Code ==== '検索キーの設定 Const key = "ほげほげ" '検索対象のテキストファイルのオープン Set fs0 = CreateObject("Scripting.FileSystemObject") Set fr = fs0.OpenTextFile(Server.MapPath("hogehoge0.txt"), 1) '検索結果のテキストファイルのオープン Set fs1 = CreateObject("Scripting.FileSystemObject") Set fw = fs1.OpenTextFile(Server.MapPath("hogehoge1.txt"), 2) 'テキストファイルの読み込みと検索 Do Until fr.AtEndOfStream str = fr.ReadLine If InStr(str, key) > 0 Then fw.WriteLine(str) End If Loop 'ファイルを閉じる fw.Close fr.Close 'オブジェクトの解放 Set fw = Nothing Set fr = Nothing Set fs0 = Nothing Set fs1 = Nothing ==== end of Code ==== 余談ですが、タイトルはもっと詳しく書くべきでしょう。 (例:[VBSctript]文字列の検索方法を教えてください) また、stockjpさん自身はまったくコードを書いていないのでしょうか? 書いたものがあるならそれを掲載して、「ここがうまくいかない」と尋ねる形にした ほうが良いと思います。 コードがあれば、回答者はstockjpさんの意図を具体的につかみやすくなります。 逆に、コードが無ければ、「一から書くのはちょっと。。。」と敬遠されてしまいます。 stockjpさんのスキルアップのためにも、ご自身が書いたコードを掲載すべきでしょう。 老婆心ながらアドバイスです。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

どこまでできているのですか? 1)ファイルの特定 2)ファイルの読み込み 3)1行読み込み 4)読み込んだ文字列にキーが存在するかの検索 5)キーの存在する文字列の出力 6)ファイルの終わりまでの繰り返し 1の部分は コマンドラインで指定するとか 特定のフォルダ(カレントフォルダとか)の特定の種類のファイルについてとか、決まりきったファイル名など 2は FileSystemObjectの Fileオブジェクト取得してOpenAsTextStreamメソッドで良いでしょう 3は ReadLIneメソッド 4は InStrメソッド 5は 出力用のTextStreamをCreateTextFileなどで作成したストリームにWriteLineメソッドを使用します 6は AtEndOfStreamを判断材料にした WhileやDoなどのループ処理 といった具合ですよ ご自分で考えたコードなどを投稿して ここまで出来ているのだがこの実行結果が期待する結果とこのように違うがどこが変なのでしょう といった質問形式にしましょう

関連するQ&A

  • VBScript(WSH)でのランダムアクセス

    VBScript(WSH)を用いてファイル内を検索し、特定文字列の次の行に文字列を追加するスクリプトを作成しています。 シーケンシャル方式を用いた方法では作ることが出来ました。 ただ、それだと一度全ての行をを読み込み特定位置に追加した後、もう一度全て上書きしているため処理が多くなってしまいます。 そこでランダムアクセスを用いて任意の位置に文字列を挿入できないかと考えました。 VBの Open ファイルパス For Random As ~ も試しましたがうまく動きませんでした。(構文として認識していない?) VBSでのランダムアクセスは不可能なのでしょうか? 良い方法がございましたらご教授ください。 よろしくお願いします。

  • VBScriptのCloseとNothing

    VBScriptのCloseとNothing vbsでバッチ処理をプログラムを作っています。 内容は、テキストファイルの読み込みと書き込みです。 OpenTextFile(読み取り専用)でテキストファイルの中身を読み取り、 文字列操作後、 OpenTextFile(追記モード)で 読み取ったテキストファイルとは別のテキストファイルに書き込みます。 CloseとNothingは いつ、どのように使えばよいのですか? 参考サイトでも良いので教えてください。 よろしくお願いします。

  • VBScriptでエクセルを開き、

    VBScriptでエクセルを開き、 そのエクセルにテキストを書き込んでセーブしてから閉じる。 という処理を行っているのですが、 テキストを書き込んでいる間に、エクスプローラー上で別のエクセルファイルを開こうとすると、VBScriptで開いている同じエクセルアプリケーションで開いてしまい、 VBScriptのセーブしてから閉じるという処理が走ると、同様に閉じてしまいます。 希望としては、 テキストを書き込んでいる間に、エクスプローラー上で別のエクセルファイルを開こうとすると、別エクセルアプリケーションが開き、VBScriptとは、別として動作してほしいと考えていますが、 私の至らぬ知識ですとどうしても解決できません、ご協力をお願い致します。

  • VBScriptでテキストファイルの内容の間違い探しは出来るでしょうか

    VBScriptでテキストファイルの内容の間違い探しは出来るでしょうか? CSVをテキスト形式で読み込んでいるファイルなのですがごくごくたまに一部内容が違っています。 例: <Aテキスト> "AAAAA","BBB","CC" "DDDDD","EEE","FF" "GGGGG","HHH","II" <Bテキスト> "AAAAA","BBB","CC" "DDDDD","EEE","F8" "GGGGG","HHH","II" とほとんどあっているのですが一部違う行をみつけて別ファイルにその行を書き出したいのです。 CSV形式で見たときA列+B列の値が一致したもののC列データが正しいか確認したいのですがどういったアルゴリズムがいいのでしょうか? お願いします。

  • VBScript フォルダ以下からファイルの検索、コピー

    VBScriptはまったくの初心者ですので、自分なりに調べてはみたのです がどうしてもわからなかったため質問しています。 OSはWinXPになります。 VBScriptで特定のフォルダ(C:\AAA\)以下からファイル(*.txt)を検索し てコピーするプログラムを書きたいです。 C:\AAA\・・・\*.txt 指定したフォルダからファイルを検索をすることはできたのですが、サ ブフォルダがたくさんある場合のファイル検索ができませんでした。 コピーの仕方は検索したファイルから最新のタイムスタンプのファイル以外を別フォルダにコピーしたいです。 あとわかりやすいVBScriptについて記載されているサイトも教えていただけると助かります。

  • VBScriptについて教えてください!

    VBScriptで日付が記載されたテキストファイルを読み込み 読み込んだ値と今日の日付を比較する処理をしたいのですが、 今日の日付と異なるのに一行目でいきなり一致との判断をしてしまいます。 どうしてなんでしょうか? すごく初歩てきなことかもしれませんが、御教授願います。 <日付が記載されたテキストの内容> 20090401 20090502 20090603 ・ ・ ・ <スクリプト内容> '本日を取得 strTodayTmp=Year(Date) & Month(Date) & Day(Date) 'ファイルの内容を全部読み終えるまでループ Do Until objInFile.AtEndOfStream = true 'ファイルの内容を1行ずつ読み込む strRecord=objInFile.ReadLine intCompare = StrComp(strRecord, strTodayTmp, vbTextCompare) '読み込んだ内容と一致するか If intCompare = 0 Then 'フラグオン blnGo=1 end if Loop

  • PHPプログラムについて

    読み込んだテキストファイルを1行ずつ検索し、特定の文字が見付かればそれに続く文字列を配列に格納するというプログラムを作りたいです。 そこで指定文字列の出現以降の文字列を取り出すというstrchr関数を用いて 作成を試みたのですが上手くいきません。 何か別の方法があれば教授をお願いします。

    • 締切済み
    • PHP
  • vbscriptによる条件分岐とファイル出力

    vbscript初心者です。ご教授頂けますと幸いです。 ネットワーク監視ログが毎朝出力され、そのログの中身を、各サーバにログインし手作業で確認を行っています。 この作業を、VBscriptで行いたいと思っているのですが、どうもうまくいかず困っています。 正常時のログには必ず「1,2」と文字列が出力されます。 この文字列を検索対象にして、「1,2」の記述があれば、新規の結果確認ログに「ネットワークは正常です」とコメントを付けて、ファイルを出力し、 「1,2」が見つからなかった場合は、そのログファイルの3行目のみを、新規の結果ログファイルに抽出する、VBscriptを作成したいと思っています。 異常時のログファイルには、異常を知らせるコメントが3行記述されてます。必要な行は、3行目だけなので、3行目を結果ログとして出力したい。 以下、構文ですがVB初心者であり、色々なサイトを見て作ってみましたが全然動かず今回、ここに投稿しました。 '検索対象のテキストファイルのオープン Set WshShell = WScript.CreateObject("WScript.Shell") Set objFs = CreateObject("Scripting.FileSystemObject") Set objFs = Fs.OpenTextFile(NlbTmp) If Instr(A,"1,2") > 0 Then MsgBox "ネットワークは正常です" Else ”異常の場合の条件分岐が分からず・・・” Set oText = CreateObject("Scriptting.FileSystemObject").CreateTextFile( 結果ログ.log, True ) str = Fs.ReadLine Fs.WriteLine(str) End If 自分で作成するのが初めてな物で本当によろしくお願い致します。

  • VBScript

    ファイルの中身を1行ずつ抽出することは出来たんですが、特定の列の抽出の仕方が分かりません。 1列目の値が下記のような日付となっています。08/22/2005 01:47:22.953,****,****,**** 日付だけで比較したいんですが、どのように記述すればいいのでしょうか?どなたか教えてください。

  • VBScriptでのSaveAsについて

    現在、私は「VBScript」を学習中です。 練習に、VBScriptで任意のフォルダにあるすべてのWordのファイルをテキストファイルに保存する簡単なプログラムを作りました。 それは作れたのですが、SaveAsでテキスト保存するときに、 w.SaveAs "xyz.txt", 2 というように、「2」を指定することはいろいろなサイトでわかったものの、それでは他の場合の「一覧」というのがどうしても見つかりません。 Microsoftのサイトでも、「VBA」の場合、「olDoc, olTXT…」などと載っていますが、「VBScript」での使用例がその下に載っているものの、「VBA」の「olDoc」がVBScriptではどの数字を指定するのかなど、一切記載がありません。 どなたか、「VBScript」で「SaveAs」利用時の引数の一覧が掲載されているサイトをご存じの方がおられましたら、アドレスをお教えください。 よろしくお願い致します。

専門家に質問してみよう