削除がうまくいくには?

解決


ぬるぽっぽ  2006-08-23 23:39:05  No: 96390

Ping情報ファイル作成後削除するプログラムを作っているのですが
70:ファイルを書き込めませんというエラーが出て
うまくいきません。どなたかうまくいく方法を教えて下さい。
以下ソースです
環境6.0  WinXP

Private Sub Command1_Click()
    Dim Fso As New FileSystemObject
    
'ファイルを作成
Call Shell("cmd.exe /C ping > c:\sample.txt", 0)
'ファイルを削除
Fso.DeleteFile "c:\sample.txt"

End Sub


あん  2006-08-23 23:49:54  No: 96391

CMDが終了する前に
削除しようとしているからですね。
Shellは実行が終了しなくても次の処理にいきますので。。


あん  2006-08-23 23:59:51  No: 96392

>Call Shell("cmd.exe /C ping > c:\sample.txt", 0)
これのかわりに

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")

WshShell.Run "cmd.exe /C ping > c:\sample.txt",0,True


ぬるぽっぽ  2006-08-24 00:38:21  No: 96393

あんさん返答ありがとうございます。
教えて頂いたやりかたでできたのですが、
ボタンをダブルクリックするとエラーが出てしまいます
回避する方法は無いでしょうか?


ささ  2006-08-24 00:43:47  No: 96394

>Shellは実行が終了しなくても次の処理にいきますので。。

ならば、実行が終了するのを待ってから削除すればよいのでは?
ってことで、花ちゃん さんのサイトのサンプル
他のプログラムの終了を待つ(Shell関数で起動した)  
を確認することをお勧めします。


あん  2006-08-24 01:07:35  No: 96395

ダブルクリックした時、二重処理をしないように
すればいいのかな


あん  2006-08-24 01:21:48  No: 96396

とりあえずフラグでやってみました。

Private Sub Command1_Click()
    Dim Fso As New FileSystemObject
    Static FLAG As Boolean
    If FLAG Then Exit Sub
    FLAG = True
   
'ファイルを作成
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")

WshShell.Run "cmd.exe /C ping > c:\sample.txt",0,True
'ファイルを削除
Fso.DeleteFile "c:\sample.txt"

    FLAG = False
End Sub


ぬるぽっぽ  2006-08-24 02:38:07  No: 96397

とりあえずボタンのenableでやることにしました
ありがとうございました


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

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






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