tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルUNLHAで使用したフォルダの削除
記事No14346
投稿日: 2010/01/06(Wed) 21:40
投稿者seven
以下のようにc:\dummy\内の全ファイルをc:\test.lzhに圧縮後、
c:\dummy\フォルダー内の全ファイルを消去した上でc:\dummy\フォルダを
削除しようとすると、Unlhaがc:\dummy\フォルダが開かれているためか
c:\dummyフォルダを削除できません。

Unlha Me.hwnd, "a -d0 c:\test.lzh c:\dummy\*.* -w1", msg, 1024
Kill "c:\dummy\*.*"
RmDir "c:\dummy\"         <---ここでエラーが発生。

この症状を回避する方法をご存知ありましたら、
お教えいただけませんでしょうか。
よろしくお願い致します。

[ツリー表示へ]
タイトルRe: UNLHAで使用したフォルダの削除
記事No14347
投稿日: 2010/01/07(Thu) 11:50
投稿者花ちゃん
> 削除しようとすると、Unlhaがc:\dummy\フォルダが開かれているためか
> c:\dummyフォルダを削除できません。

と思ったのなら、掴んでいるフォルダーを移動して見てはどうですか?

[ツリー表示へ]
タイトルRe^2: UNLHAで使用したフォルダの削除
記事No14358
投稿日: 2010/01/08(Fri) 08:04
投稿者seven
花ちゃんさんご回答、有難うございます。

Name関数を使用して対象フォルダ(c:\dummy\)の移動及び名前変更の双方とも
同じでエラーが出てしまいます。
ちなみにカレントフォルダはc:\dummy\にはなっていません。

大変申し訳有りませんが、未解決の為、再度お教えいただけませんでしょうか。

[ツリー表示へ]
タイトルRe^3: UNLHAで使用したフォルダの削除
記事No14359
投稿日: 2010/01/08(Fri) 08:25
投稿者花ちゃん
> Name関数を使用して対象フォルダ(c:\dummy\)の移動及び名前変更の双方とも
> 同じでエラーが出てしまいます。
> ちなみにカレントフォルダはc:\dummy\にはなっていません。

カレントフォルダと参照しているフォルダーが同じとは限らないでは?。

事象を再現できる(他の人が確認できる)コードを投稿して頂けませんか?

[ツリー表示へ]
タイトルRe^4: UNLHAで使用したフォルダの削除
記事No14360
投稿日: 2010/01/08(Fri) 09:01
投稿者seven
以下のようにフォルダ削除前にName関数でフォルダ名の変更を試みましたが、
Name関数の実行時にエラーでます。
Unlha Me.hwnd, "a -d0 c:\test.lzh c:\dummy\*.* -w1", msg, 1024
Kill "c:\dummy\*.*"
Name "c:\dummy\" as "c:\dummy1\"    <--- ここでエラー発生
RmDir "c:\dummy1\"

度々すみませんが、お教えいただけませんでしょうか。

[ツリー表示へ]
タイトルRe^5: UNLHAで使用したフォルダの削除
記事No14361
投稿日: 2010/01/08(Fri) 09:58
投稿者花ちゃん
> 以下のようにフォルダ削除前にName関数でフォルダ名の変更を試みましたが、
> Name関数の実行時にエラーでます。
> Unlha Me.hwnd, "a -d0 c:\test.lzh c:\dummy\*.* -w1", msg, 1024
> Kill "c:\dummy\*.*"
> Name "c:\dummy\" as "c:\dummy1\"    <--- ここでエラー発生
> RmDir "c:\dummy1\"

上記コードを試して見ましたが、エラーなく、フォルダーが削除されましたが。
(私の環境では、エラーが発生しません。)

エラーが発生したとなると、ファイルが削除されない内にフォルダー名の変更が
行われた可能性があります。(マシンの環境により)
又は、圧縮するファイルが多いとかサイズが大きいとかで圧縮が終っていない内に
次に進んだとか。
又、IDE 上と EXE 上とでも動作が違ってくるかも知れません。
(私は、IDE 上でしか試していませんが。)

圧縮・削除後、少し待ち時間を作って完全に作業が終了されてから次に進むように
すれば多分エラーはでないかと。
試しに、F8 キー 等で1ステップづつコードを動かしてみたら確認ができるかと。

それよりも、フォルダー内のファイルごとフォルダーを削除したいなら
   Unlha Me.hWnd, "a -d0 c:\test.lzh c:\dummy\*.* -w1", msg, 1024
   CreateObject("Scripting.FileSystemObject").DeleteFolder "c:\dummy"
で削除できます。

上記は簡便的にFileSystemObjectを使っているので、ここの掲載の FileSystemObject の
項をご覧ください。

又は、下記のような方法でもファイルごとフォルダーを削除する事ができます。
http://www.hanatyan.sakura.ne.jp/vbhlp/fil_Delete.htm

[ツリー表示へ]
タイトルRe^6: UNLHAで使用したフォルダの削除
記事No14370
投稿日: 2010/01/12(Tue) 09:45
投稿者seven
花ちゃん さん、ご回答有難うございます。
他PCで試したところ、何のエラーも無く実行できました。
問題の深堀が出来ていませんが、現状のエラーを回避できましたので、
本件に関してCLOSEさせて頂きます。
(問題の深堀は何とか自分で行なってみます。)
ご助言を頂きまして、有難うございました。

[ツリー表示へ]