
VBScript(WSH)を用いてファイル内を検索し、特定文字列の次の行に文字列を追加するスクリプトを作成しています。
シーケンシャル方式を用いた方法では作ることが出来ました。
ただ、それだと一度全ての行をを読み込み特定位置に追加した後、もう一度全て上書きしているため処理が多くなってしまいます。
そこでランダムアクセスを用いて任意の位置に文字列を挿入できないかと考えました。
VBの
Open ファイルパス For Random As ~
も試しましたがうまく動きませんでした。(構文として認識していない?)
VBSでのランダムアクセスは不可能なのでしょうか?
良い方法がございましたらご教授ください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
(1)VBスクリプトにしろVBにしろ、ランダムアクセスは、レコード長(L)を一定にすることにより、第X番目のレコードの始まりは、(X-1)*L+1で、それより長さLを取り出すため、開始位置が計算できることにより、システムがそれに対応しているので、読み出せるのです。
(2)さてX番目のレコードを取り出せても、問題にしている文字列が、第何番目と第何番目と・・・のレコードにあるかはどうして管理しましたか。それに対する備え・対策なくしては、ランダムファイルを使ったとしても、何にもなりません。
(3)通常はそれに対して、語句の辞書と第何番目のレコードに出現するかの索引を(本番利用に備えて、本番でないときに)作成します。
この視点が欠けているのではないでしょうか。
(4)(3)の時間は編集やソートなどの時間が必要で、
何回も本番で索引を繰り返し使うケースか、本番で遅延を許されないケースでないと、(1回しか処理しないようなケースでは)「総なめ」する方が全体では、処理時間が少ないこともあり得ます。プログラムロジックも簡単で、メモリを大きく使える昨今ではスピードも問題ないケースも
あり得ます。
回答ありがとうございます。
>常はそれに対して、語句の辞書と第何番目のレコードに出現するかの索引を(本番利用に備えて、本番でないときに)作成します。
>この視点が欠けているのではないでしょうか。
そうですね。
容易に考えていました。
総なめの方は完成し、特に問題がないのでこのままのスクリプトで進めます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差し込み印刷のレコード数について
-
ACCESSで大量の更新を行うと「...
-
レコードセット(ADO.Recordset)...
-
Access を×ボタンで閉じ...
-
ソート処理について
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
Accessでレコードの更新を任意...
-
ACCESS VBA テーブルデータに...
-
データセットのレコード更新が...
-
AccessVBAのSQL文が突然エラー...
-
ADODBのRecordset.Deleteのエラ...
-
Access フォーム 選択されてい...
-
ADO VBA 実行時エラー3021
-
固有レコード識別子の選択とは
-
ワードの差込印刷で教えて下さ...
-
アクセスでレポートの1印刷内...
-
ACCESS VBA テキストボックス
-
[VBA] ADOの Clone と AddNew
-
カレントレコードが無い事を判...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
ADO VBA 実行時エラー3021
-
差し込み印刷のレコード数について
-
ACCESSで大量の更新を行うと「...
-
ファイル書込みで一行もしくは...
-
カレントレコードが無い事を判...
-
ワードの差込印刷で教えて下さ...
-
アクセスでレポートの1印刷内...
-
DataGridViewの内容をDBに反映...
-
[VBA] ADOの Clone と AddNew
-
固有レコード識別子の選択とは
-
JSPのNULLレコード表示について...
-
Access を×ボタンで閉じ...
-
サブフォームに新規レコードを...
-
データセットのレコード更新が...
-
サブレンジ分割されたNDB(富士...
-
レコードセット(ADO.Recordset)...
-
DataGridViewにてセル以外をク...
-
COBOLでのランダムアクセス
おすすめ情報