• ベストアンサー

空きでないディレクトリの削除

VisualStdio.NET VC (MFC利用) でディレクトリを削除する方法教えてください。 ただしディレクトリは空きではありません。 \temp\123\abc.dat \temp\123\def.dat (ReadOnly) \temp\abc.dat \temp\def.dat \temp\123\456\aa.dat (Hidden) のように対象のディレクトリの下にサブディレクトリやファイルが あったり読み込み専用などのファイルがあるかもしれません。 読みとり専用、隠しファイルなどもユーザーの確認なしで削除する方法を 教えてください。 *ファイルが使用中などでどうしても削除できない場合はそのファイルは とばしてかまいません。 ヘルプみてもディレクトリが空きであることが条件なのでわかりません。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>ただファイル使用中の場合はエラーメッセージが出てしまいます。 >これを表示しないようにする方法わかりませんか? >「ファイルまたはフォルダの削除エラー」 >で確認メッセージが出てしまいます。 ヘルプをちゃんと見てくださいね。 FOF_NOERRORUI を指定してください。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

SHFileOperation()を使いましょう。

lilis
質問者

補足

現在これでやってみました、PC01はネットワーク上です。 共有フォルダがtemp です。 SHFILEOPSTRUCT sfo; memset(&sfo,0,sizeof(sfo)); sfo.hwnd = NULL; //ウインドウハンドル sfo.wFunc = FO_DELETE; sfo.pFrom = "\\PC01\temp";//削除先 sfo.fFlags=FOF_SIMPLEPROGRESS|FOF_NOCONFIRMATION;//削除する SHFileOperation(&sfo); ファイルが読み込み専用、隠しでもできました。 ただファイル使用中の場合はエラーメッセージが出てしまいます。 これを表示しないようにする方法わかりませんか? 「ファイルまたはフォルダの削除エラー」 で確認メッセージが出てしまいます。

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 ディレクトリ内を検索してから最後にディレクトリを削除するように するしかないと思います。 ディレクトリ内のファイルを検索するのは、FindFiestFile/FindNextFile を再帰的に使用すればできます。

lilis
質問者

補足

SHFileOperation でやってみています。 FindFiestFile/FindNextFile の場合具台的にどのようにやればいいのでしょうか? ディレクトリだった場合、再帰的な処理する部分がわかりません。

関連するQ&A