VBScript初心者です。
VBScriptで配列を扱った処理を作ろうとしています。
具体的には、ファイルAを読み取り、特定の条件に合うものだけをファイルBに書き込みます。
a.ファイルAを1行ずつ読み込み、配列strに格納
b.配列strの中から特定の条件に合うものをファイルBにwriteline
ファイルAは毎日行数が変動するファイルです。
困っているのは、配列strを宣言するときに要素数まで指定しないと使えない(ように見える)
ことです。調査不足かもしれませんが、ネット検索上はそう解釈できました。
この場合、上記処置をしようとすると、
1.ファイルAオープン
2.ファイルAの行数を取得
3.ファイルAクローズ
4.配列strを2で取得した行数を要素数として宣言
5.ファイルAオープン
6.上記a,bを実施
となり、ファイルAを2回オープンクローズすることになり、本当にこんなやり方しかないの?
と思ってしまいます。
ReDimという配列の再宣言という概念もあるようですが、再宣言前に格納したデータがすべて
消えてしまう動きに見え、使えそうもありません。
配列を適当に大きな要素数で定義すればできるといえばできますが、上述の通りファイルAは
日々行数が変動するファイルであり、想定を上回る行数になった場合に困るため、適正値の
判断がしにくいです。
それしか手がないならあきらめますが、当方が知らないだけで、ほかに良い方法があるのでは
と期待しております。
不勉強で恐縮ですが、ご教示お願いします。
No.2ベストアンサー
- 回答日時:
redim preserveとすることで、以前の内容が保障されます。
以下のスクリプトを実行してみてください。
redimのサンプルです。
--------------------------------
Option Explicit
Dim stime()
redim preserve stime(0)
stime(0) = "2011/11/18 09:48:25"
redim preserve stime(1)
stime(1) = "2011/11/19 09:48:25"
redim preserve stime(2)
stime(2) = "2011/11/20 09:48:25"
dim st
for each st in stime
WScript.Echo st
next
--------------------------------------
No.3
- 回答日時:
というか、
ファイルAを全て読み込まないと、ファイルBに書き出す行が判断できないのですか?
通常ですとファイルから一行ずつ読み取って、その行が書き出す行であれば書き出し、という処理になると思います。
書き出す行の判断に複数行が必要だとしても、変数をフラグに使用するなどすれば実現できると思います。
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objInput = objFS.OpenTextFile("input.txt", 1, False)
Set objOutput = objFS.CreateTextFile("output.txt")
Do While ObjInput.AtEndOfStream <> True
rem 実際は条件に合う行のみ書き込み実施
objOutput.WriteLine(ObjInput.ReadLine)
Loop
objInput.close
objOutput.close
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DXFファイルをVBで取り込み、図...
-
RGBのバイナリデータをCImageに...
-
ファイル内の(&H0A)を(&H0D0A)...
-
プログラミング言語 rubyを用...
-
Unicodeのファイル読み込みがう...
-
インデックスが配列の境界外で...
-
VB5にてコンパイルしたプログラ...
-
VBAでテキストファイルの改行を...
-
awk getlineをもう一度ファイル...
-
VBAでテキストファイルを複数開...
-
VB4.0の「LSet」と同等の機能を...
-
perl 特定の文字列をdatファイ...
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
エクセルで複数のコメントのサ...
-
バッチファイル 二つ上のディ...
-
カンマ区切りのCSVファイルから...
-
Wordで差込印刷した後に別々の...
-
指定したフォルダ内の最新ファ...
-
エクセルvbaでdocuworksprinter...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DXFファイルをVBで取り込み、図...
-
バイト型のデータを16進表記で...
-
VBAでテキストファイルの改行を...
-
Cで2次元配列にCSVファイルを...
-
VBAでテキストファイルを複数開...
-
バイナリファイルでOutOfMemory...
-
テキストファイルを後ろから読...
-
[VBS] 16進数でバイナリファイ...
-
バイナリ読み込み時のデータ受...
-
ファイル入力のデータを構造体...
-
RGBのバイナリデータをCImageに...
-
VBでLOOKUP機能
-
Excel VBAで画像解析
-
バイナリ出力
-
VBScriptの配列は、要素数を指...
-
バイナリファイルの一部分をカ...
-
perl 特定の文字列をdatファイ...
-
awk getlineをもう一度ファイル...
-
CSVファイルによる検索の高速化
-
ファイル内の(&H0A)を(&H0D0A)...
おすすめ情報