• 締切済み

特定行の読み込み方法について

vbscriptでReadLine メソッドを使うと、1行ずつファイルから読み込み、その文字列を返すことが出来ますが、 この場合、ファイルの中身全行が1行ずつ読み込まれてしまいます。 たとえば、1行目と2行目、最終行と、その前の行だけを読み込みたい場合には、どのようにすればよいでしょうか。 任意の行だけを読み込むというのは、vbscriptではできないのでしょうか。

みんなの回答

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

わかりやすいのは、ReadLineを繰り返して、繰り返し回数が望みの数字の場合だけ処理すればいいでしょう。 最終行とその前というのは繰り返し回数を見てもわからないので、毎回直近の2行だけを別途保存して置いて、EOFになってからその2行を見ればいい。

isis_lucid
質問者

お礼

回答ありがとうございます。 >ReadLineを繰り返して、繰り返し回数が望みの数字の場合だけ処理すればいいでしょう。 →繰り返し回数が望みの数字であるというを取得するのはどのように指定すればよいでしょうか。(繰り返しが、For Next/Do until Loopを使うというのはなんとなくわかります。) >最終行とその前というのは繰り返し回数を見てもわからないので、毎回直近の2行だけを別途保存して置いて、EOFになってからその2行を見ればいい。 →直近の2行だけを別途保存というのがわかりません。どのように指定するのでしょうか。 初歩的な質問ばかりしてすいません。本来は、いただいたヒントを元に自分で調べていかないといけないのですが、当方初心者のためどのように調べていけばよいかもわかりませんでした。 厚かましいお願いとは思いますが、教えていただきますようお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.1

>任意の行だけを読み込むというのは、vbscriptではできないのでしょうか。 出来ません。 >たとえば、1行目と2行目、最終行と、その前の行だけを読み込みたい場合には、 全行読んで、その中から必要な行だけを使います。

isis_lucid
質問者

お礼

回答ありがとうございました。 >>たとえば、1行目と2行目、最終行と、その前の行だけを読み込みたい場合には、 >全行読んで、その中から必要な行だけを使います。 必要な行だけ使うというのは、どのように指定すればよいのでしょうか。 まず、ReadAllメソッドを使って全行取得すればよいでしょうか。 その場合、その後に必要な行を取ってくる部分で、どのメソッドを使うのでしょうか。 質問ばかりで恐縮ですが、よろしくお願いします。

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

関連するQ&A

  • VBSで指定行に挿入

    VBScriptで指定行に文字列を挿入したいと思っていますが可能でしょうか? 例:)2行目に挿入 前    後 1    1 2    挿入列 3    2      3 先頭から呼んでいき WriteLineを… と思ったのですが、最後尾に追加でした^_^; で、新規ファイルに順に呼んで(前)を削除、(後)をリネーム。と考えたのですが、スマートではありません。 なにかよいメソッドはあるのでしょうか?

  • 複数行の入力を受け取る方法

    wshのアプリをvbscriptで書こうと思っています。 vbscriptのinputbox関数は1行しか文字列を入力できませんが、複数行の入力を可能にするようなダイアログを表示する方法はないでしょうか。 すみませんが教えてください。

  • 【C#】特定の改行コードのみで1行ずつ取得したい

    C#でツールを作成しています。 テキストファイルの中を1行ずつ読み取りたいです。 ただし、改行コード \r\n と \n が混在しており、 \r\n までを1行として取得したいのです。 ReadToEndで一旦すべての文字列を取得し、 Split("\r\n")で分割という方法で解決はするのですが ファイルサイズが膨大な場合、どうしても処理が重くなってしまいます。 ReadLineなどで上手くできる方法はないでしょうか? よろしくお願いします。

  • 秀丸である文字列を含む行の一つ前の行だけを表示する

    秀丸である文字列を含む行の一つ前の行だけを表示する ことはできるでしょうか。 例えば、ファイルをコピーするバッチファイルの実行結果を リダイレクトしたファイルの中の 「指定されたファイルが見つかりません」 という文字列のある行の1つ前の行のみを収集する場合など。 難しければ指定した文字列を含む行も 一緒に表示されていてもいいです。

  • 複数行を特定の列の各セルの中にある特定の文字列でソートする

    複数行を特定の列の各セルの中にある特定の文字列でソートしてその特定の文字のみが含まれる行のみ取り出す方法って簡単にできますか? たとえばA1からF100までのセルでC列のセルに特定の文字列が含まれる場合その行を集めて残りはそのしたの行に置き換えるとか。 特定の文字列はセルの文字列の中のどの部分にあるかは任意とします。よろしくおねがいします。 イージス

  • テキストファイルの行を指定して読み込み

    テキストファイルの読み込みたい行を指定して テキストボックスに表示させたいのですが、 どのようにすればよいでしょうか? StreamReaderには一行分の文字を読み取るReadLine メソッドがありますが、行は指定はできないようです。 良い方法があればアドバイスを頂きたいです。 よろしくお願いします。 --- 開発環境:VS2005 pro OS:Vista

  • perlを使用しての特定行抽出について

    何万行も書いてあるテキストファイルがあります。抽出したい文字列の一覧がテキストファイルにまとめられています(文字列は約1000個)。抽出したい文字列は一行にひとつづつ書かれています。何万行も書いてあるテキストファイルから抽出したい文字列と二つ合致したらその行を抽出したいです。ここで、注意していただきたいのが、抽出したい文字列一覧から二つの文字列にヒットした行を抽出したいです。宜しくお願い致します。 何万行も書いてあるテキストファイル aaaaa abc edi bb aert kkkkkkkkkk lllllll ddddd aaaaa anhi kkk    ・・・・・・・・ ・・・・・・・・ 抽出したい文字列一覧のテキストファイル aaaaa bbbbb ddddd iiiiiiiii eeeee ・・・・・ ・・・・・

    • ベストアンサー
    • Perl
  • エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法

    エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法 表題のとおりですが、エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法について教えてください。 特定の文字(C列にあります)が含まれている行から5行下の先ほどとは違う文字(これもC列にあります)までを削除したいのです。 それがたくさんあり大変困っております。 エクセルを起動してマクロの記録を行い手作業で5回削除し記録終了としたのですが、 5回以上削除したい場合は操作が行われませんでした。 これをマクロで行うにはどういう式を作ればいいでしょうか? 宜しくお願いします。

  • 文字の場合でもA列の最終行の行番号を取得するには

    A列の最終行の行番号を、 =MATCH(10^10,A:A) を使えば取得できますが、 これはA列にの最終行が数値の時だけで、文字列が最終行の場合は無視されるようです。 文字列でも取得する方法はありますか? 10^10の部分を変更すればいいと思いますが、どうすればいいですか?

  • ファイル内の1行(レコード)から指定バイト数だけを読込みたい。

    ファイル内の1行(レコード)から指定バイト数だけを読込みたい。 // ファイルオープン FileInputStream fis = new FileInputStream(file); InputStreamReader isr; isr = new InputStreamReader(fis); BufferedReader result = new BufferedReader(isr); while (result.readLine() != null) { // 末尾まで移動する } 上記のようにBufferedReaderを使い、ファイルを読み込んでいるのですが、 ファイル内の1行ごとに指定バイト数だけを読み込みたいです。 readLineメソッドでは1行を全部読み込んでしまうため出来ません。 (readLineで一度他の変数へ入れてからというのは無しです。読込む時点で指定バイト数としたいのです。) readメソッドでは、行ごとの指定って出来ないですよね・・・。 ファイル操作系の知識が少ない為、なかなか探せません。 読み込む時点で1行の取得レコード長に制限値を設ける方法はないでしょうか? また、取得レコード長が制限値を超えた場合、エラーメッセージを出したいのですがその判定とかも可能でしょうか? どうかよろしくお願いします。 ロジックとしてはこんな感じにしたいです。 while(ファイルの終端まで行を読み込む){   // 読み込んだ1行が2048バイト未満かを判定   if(読み込んだ1行が2048バイトを超えている場合){     エラーメッセージを出力する(処理はそのまま続行)   }   1行から2048バイト未満を取得 }

    • ベストアンサー
    • Java
このQ&Aのポイント
  • EPSON社製品のPX-045Aでカラーインクが切れている場合、ブラックインクのみを使用してグレースケールで印刷することは可能ですか?
  • PX-045Aのカラーインクが切れている場合、インクの交換ができるまでの間、ブラックインクのみを使用して印刷する方法を教えてください。
  • カラープリンターPX-045Aでカラーインクが切れている状態であっても、ブラックインクのみを使用してグレースケールの印刷ができるかどうか知りたいです。
回答を見る