TEXTFile内の削除について


とも  2007-02-15 23:46:19  No: 98025

はじめて掲載します。

VBSでフォルダ内のテキスト形式ファイルすべてに対して先頭から
3行目と後尾から3行目を削除したいのですが・・・
良い方法はありますでしょうか?


魔界の仮面弁士  2007-02-16 05:02:10  No: 98026

> 良い方法はありますでしょうか?
良いも悪いも、そのようにゴリゴリと、「自力で」コーディングするしか無いかと。

大まかな処理イメージで言うと、

1. FileSystemObject を利用して、Folder オブジェクトからファイルを列挙。
2. OpenAsTextStream で個々のファイルを読み取る。
3. 先頭末尾の3行ずつを取り除き、ファイルに保存。

という感じですよね。
あとは、元のファイルを上書きで加工するのか、加工した結果ファイルを
別フォルダに配置するのかなど、細かい処理を付け加えれば良いのでは。


とも  2007-02-16 18:51:22  No: 98027

魔界の仮面弁士  様

助言ありがとうございます。
まったくそのとおりですね。。
Just Do it! でがんばってみます。

とも


とも  2007-02-16 23:08:29  No: 98028

いろいろ調べているのですが、
テキストファイル内の行を削除する方法って
結構、難しいように思いますが、
そのあたりってどうでしょうか??

効率的なテクニックがあるのでしょうか?


魔界の仮面弁士  2007-02-16 23:28:30  No: 98029

行を削除するというよりも、それらの行を含んでいないデータを
作りなおす、という方向で考えてみてください。

単純なところでは、
  (1) ファイル中の全データを読み込む。← ReadAll メソッド
  (2) 改行コードで分割する。← Split 関数
  (3) 分割した行数をカウント。← UBound 関数
  (4) [4行目]〜[末尾-3行目]までループ。← For ステートメント
  (5) ループ中で個々の行を別ファイルに追記。← WriteLine メソッド
という感じにしてみるとか。

ファイルサイズが何百メガバイトもあって、一度に読み込めないなら、
1行ずつ読み書きすれば良いのではないかと。


あんび  2007-02-17 00:22:22  No: 98030

良い案ではないですが
3行目と後尾から3行目を削除したいのですが・・・
との事なので、
>ファイルサイズが何百メガバイトもあって、一度に読み込めないなら、
>1行ずつ読み書きすれば良いのではないかと。
の時は、先に何行あるのかをカウントしないと最後から3行目の判定が
出来ないと思いますので気をつけてください。


魔界の仮面弁士  2007-02-17 01:20:17  No: 98031

>>ファイルサイズが何百メガバイトもあって、一度に読み込めないなら、
>>1行ずつ読み書きすれば良いのではないかと。
> の時は、先に何行あるのかをカウントしないと最後から3行目の判定が
> 出来ないと思いますので気をつけてください。

(1) 読み込んだ行を、適当なバッファ(Dictionary や配列など)に溜めていく。
(2) バッファが3行を超えたら(つまり4行以上になったら、そのバッファの
  先頭行を別ファイルに出力して、バッファの先頭行を破棄する。
(3) 次の1行をバッファに読み込んで、手順(2)に戻る。

という作業をファイル終端まで繰り返せば、最後の3行は出力されませんよね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加