• 締切済み

vbsでテキストファイル検索してファイルに書き込む

初心者です。 テキストファイルを以下の条件で検索して、検索がマッチしたらそのファイルのレコード行を各条件によって指定されたファイルに書き込みたいです。 1)5桁目が"D"且つ 10~11桁目が"A5"の場合、ファイル"TEXT1.txt"に書き込む 2)5桁目が"G"且つ10~11桁目が"B6"の場合、ファイル"TEXT2.txt"に書き込む 3)上記に該当しない場合、ファイル"TEXT3.txt"に書き込む どなたかご教示のほど宜しくお願い致します。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

オリジナルファイルが、E:\org.txt にあったとして 文字コードがShift-JIS、中身が mCZ8MQsfT2tWHMG XKXrDCT1QA5Pi9v f41jdIHEFa5mEDw NyiEDEF59A53TMP M4SCGZFGuB6mIAt VqfDGgEyZ0Wuz6z とした場合です。 Dim oFS Dim FF(3) Dim tmp Const forReading = 1 Const forWriting = 2 Set oFS = CreateObject("Scripting.FileSystemObject") Set FF(0) = oFS.OpenTextFile("e:\org.txt",1) Set FF(1) = oFS.CreateTextFile("e:\org_1.txt", 2,true) Set FF(2) = oFS.CreateTextFile("e:\org_2.txt", 2,true) Set FF(3) = oFS.CreateTextFile("e:\org_3.txt", 2,true) Do Until FF(0).atEndofStream tmp = FF(0).readLine If Mid(tmp, 5, 1) = "D" And Mid(tmp, 10, 2) = "A5" Then FF(1).writeLine(tmp) ElseIf Mid(tmp, 5, 1) = "G" And Mid(tmp, 10, 2) = "B6" Then FF(2).writeLine(tmp) Else FF(3).writeLine(tmp) End If Loop FF(0).Close:FF(1).Close:FF(2).Close:FF(3).Close

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストファイルについて

     ご教授お願い致します。  あるレコードを自動でテキストファイルへ書きこむ作業がありまして  テキストファイルの保存先名の指定はできるのですが  タイトルをテキスト行の一行目につけたいとの要望がありました。  そのレコードのみの書き込みのため一行目に何の題名かが  自動で表示できればいいとの要望でした。  よって、保存先名を指定の場所でファイル名を作成すると同時に  一行目に指定した題名をつけることが可能でしょうか?  ぜひ、ご回答お願い致します。  

  • 二つのテキストファイルを行単位で交互に一つに

    10000行のテキストファイルが二つあります。 二つのテキストファイルの内容を行単位で交互に結合させて一つのテキストファイルにまとめたいのですが 例えると下記のようにしたいです。 二つのテキストファイルA.txtとB.txtがあるとします。 ---------------------------------------------- A.txt ああああああああああああああ ささささささささささささささささ ななななななななななななななな ------------------------------------------------ ------------------------------------------------ B.txt かかかかかかかかかかかかかか たたたたたたたたたたたたたた はははははははははははははは ----------------------------------------------- A.txtとB.txtの内容を行単位で交互に一つのテキストファイルとしてC.txtのように保存したいです。 ----------------------------------------------- C.txt ああああああああああああああ かかかかかかかかかかかかかか ささささささささささささささささ たたたたたたたたたたたたたた ななななななななななななななな はははははははははははははは ---------------------------------------------- 検索して調べてみたのですが Pasteコマンドで実現させる方法を試してみたのですが うまくいかず、もしかしたらWindowsにもともと備わっていない機能なのではないかと思い検索したらbusybox64.exeを ダウンロードしてインストールしようと思いましたが コマンドプロンプトにbusybox64.exe --installを 入力してみますとうまく生きました。 busyboxを使わずに行単位で交互にテキストファイルを結合させる方法も知りたいです。 よろしくお願い致します。 返答をお待ちしております。

  • vbsでテキストファイル内の文字列検索

    初心者です。 テキストファイルを指定し、含まれる文字列を検索し、 結果表示したいと考えております。 色々探して、以下で作成したのですが、 うまく動いてくれません。 出来ましたら、テキストファイルの中の文字列の 一部分を指定して動作させたいと思っております。 どなたかご教示のほど宜しくお願い致します。 ---------------------------------------------------- Set WSHFso = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Dim strSearchWord Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt") Do Until tmpFile.AtEndOfStream tmpLine = tmpFile.ReadLine strSearchWord = strSearchWord & tmpLine & vbcrlf Loop Dim SearchWord SearchWord = split(strSearchWord," ") if InStr(SearchWord(ix), "test")<>0 then WScript.Echo " testを含みます。" else WScript.Echo " testを含みません。" end if ----------------------------------------------------

  • ファイル検索

    こんにちは。質問させてください。 あるフォルダ(ここでは$dir = "c:\\test\\file_data\\"とでもしておきます。)内に テキストファイルが複数存在するとします。 test1218.01.file1.txt test1218.10.file1.txt test1218.11.file1.txt test1219.01.file1.txt test1219.10.file1.txt test1219.11.file1.txt test1219.01.file2.txt test1219.10.file2.txt test1219.11.file2.txt 上記のようなファイル名のテキストファイルが存在したとします。 それでこのテキストファイルのうち、以下のファイルの内容を画面に表示したいと 考えています。 test1219.01.file1.txt test1219.10.file1.txt test1219.11.file1.txt 1219(今日の日付という意味), file1(一回目のファイルという意味)で 構成された上記のファイルを指定されたディレクトリ($dir)以下で 検索し上記のファイル名を取得し、また取得したファイルの中身を 表示するロジックを考えています。 ひとつのファイルを取得することはできたのですが、 複数となる(上記の場合は3つ当てはまることはわからないので 指定する日付などで取得ファイル数がかなりことなる)ため うまく書くことができません。 どなたかいいロジックなどをお持ちでしたら ぜひ伝授していただけたらと考えています。 どうかよろしくお願いいたします。

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

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

  • テキストファイルから抽出

    あるテキストファイルから、複数の条件に合致するレコードのみを抽出したい時、例えば、 C:¥> findstr "a b" test.txt のように出来ると思います。 この”a b”の部分をもっと複雑にいろいろと変更したくて、別のテキストファイルに記載してそれを読ませたいのですが、そのようなことは可能でしょうか?

  • 外部テキストをsplitで分割する時

    宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • DOSコマンドによるテキストファイル編集について

    下記「test1.txt」のようなファイルがあります。 先頭から指定桁目に特定文字を挿入し、末尾から指定桁分を削除する。それを行単位に行い、最終行まで繰り返す。 といったコマンド(構文)についてご教授頂けないでしょうか? 例: 先頭から4桁目に特定文字(XXX)を挿入 末尾から3桁分の文字を削除 <test1.txt> aaabbbcccddd eeefffggghhh ・・・ <実行結果:test1.txt> aaaXXXbbbccc eeeXXXfffggg 宜しくお願いします。

  • ファイルの内容を検索を行うVBS

    エクセルのA列に検索ワードがそれぞれ1つずつ入っています。特定のフォルダ内にある全HTMLファイルの中身を検索し、各検索ワードが1つでも含まれていた場合、そのファイル名をエクセルのB列の対応する行に記入していくというVBSを作成する事は可能でしょうか? 例えば 検索フォルダ:C:\\aa ___ A ______ B _________ 1__あい__ h.html,g.html,s.html 2__うえ__ i.html 3__おか__ j.html,e.html 4__きく__ 該当なし 5__けこ__ :___:    : 上の2行目の例だと、「C:\\aa」フォルダの中にある全HTMLファイルのうち「うえ」という文字列が含まれているファイル名がi.HTMLということになります。 つまり、A列を読み込んでB列に自動記入していくVBSです。 VBS初心者なもので、どなたかお分かりになる方がいらっしゃいましたら是非教えて頂きたいです。よろしくお願いします。

  • DBMとテキストファイルのどちらが良いと思われますか?

    こんにちは、 windows + ActivePerl の環境で、 簡単なデータを記録して後から検索、修正、削除したいのですが、 データを格納するのに、テキストファイルにするか、DBMを使用するか 悩んでいます。 テキストファイルに、(行番号,"*" x 100)のレコードを10万行出力したら、約10MBで、 DBMファイルに (行番号=>"*" x 100)のハッシュを出力したpagファイルは510MBでした。 その後、99999番目のレコードを以下のスクリプトで表示したところ、 体感的には違いがありませんでした。(どちらも一瞬で終了します) ******************************* #テキストファイル 検索 my $id = 99999; my $data; open(FILE,"<TEXTfile.txt") or die ; while(my $line = <FILE>){ if($line =~ /$id/){ $data = $line; last; } close FILE; print $data; ******************************* #DBMファイル 検索 my %DBM = (); my $id = 99999; my $data; dbmopen(%DBM,"DBMfile",0666) or die; if (defined $DBM{$id}){ $data = $DBM{$id}; } dbmclose %DBM; print $data; DBMを使用した場合、すべてのデータをメモリ上に展開するのでしょうか? もしそうなら、510MBも消費されてはたまりませんので、テキストファイルになりますが、 コーディング等はDBMの方が楽かな?と考えています。 データベースを利用できない環境の場合、どちらが良いのでしょうか? ご意見お願いします。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • EP-909A3では、両面印刷をする際に長辺綴じの設定を行うと、印刷物がさかさまになってしまい、綴じることができません。
  • EP-909A3での両面印刷において、印刷物がさかさまになってしまう問題が発生しています。特に、長辺綴じの設定を行った場合にこの問題が顕著に現れます。
  • EP-909A3の両面印刷機能において、長辺綴じの設定を行うと、印刷物が逆さまになってしまい、綴じることができない不具合が発生しています。
回答を見る

専門家に質問してみよう