重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBSでファイルを操作する処理を書いています。
1回目のループでtest1.txtファイルを開いて追記Aを行い、2回目のループでまたそのtest1.txtファイルを開いて追記Bを行って上書き保存しているのですが・・・


2回目に開いてファイルに保存した後、保存したファイルが「ループ開始前の状態に対して追記Bのみをされた状態になっている」のです。

ループ中に変更された内容が無視されている、というイメージです。
VBSのループはこういうことが起きるのでしょうか?batファイルのループでは、特別な宣言をしておかないと、ループ内で変数を更新してもループを抜けるまで反映されていない、ということがありました。vbsのループでファイルを扱う場合も、似たようなことが起きるのでしょうか?また、対策はあるのでしょうか?

A 回答 (1件)

>>vbsのループでファイルを扱う場合も、似たようなことが起きるのでしょうか?



あー。
自信ないのでノーコメント。


似たような経験はあります。程度にしておきます。


>>また、対策はあるのでしょうか?

sleep
コマンドが使えたかと。

何かしら、時間がかかりそうなイメージの箇所。で、sleepで、スクリプト処理の一時停止。
で、とりあえず対応できる。。。とは思います。

。。。wsfか?

まぁ、最悪、

i = 0

while i < 100000000
i = i + 1
roop

のような、無意味なループさせて、時間稼いで、疑似的にスクリプト処理の方をとめておく。
ってのも手ですが。。

この回答への補足

・・・
すみません、ちょっとした書き間違いで、ループ中に更新したファイルも正常通り動いていました。
解決、というか、もとから問題ありませんでした。

補足日時:2012/12/14 22:55
    • good
    • 0
この回答へのお礼

ありがとうございます。
ExcelのVBAに貼り付けてウォッチしてても同じ現象が起きます。
なので十分な時間を確保していると思うんです。

で、書いていて思いましたが、
1つのループで2回の更新をするんじゃなく、2回目の更新は、いったんそのループを抜けてから次のループでやるようにテストしてみます。これで改善されたら同一ループ内で更新が反映されないという結果になると思います。

わかったら追記します。

お礼日時:2012/12/14 18:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!