- ベストアンサー
空きでないディレクトリの削除
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) のように対象のディレクトリの下にサブディレクトリやファイルが あったり読み込み専用などのファイルがあるかもしれません。 読みとり専用、隠しファイルなどもユーザーの確認なしで削除する方法を 教えてください。 *ファイルが使用中などでどうしても削除できない場合はそのファイルは とばしてかまいません。 ヘルプみてもディレクトリが空きであることが条件なのでわかりません。 お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ただファイル使用中の場合はエラーメッセージが出てしまいます。 >これを表示しないようにする方法わかりませんか? >「ファイルまたはフォルダの削除エラー」 >で確認メッセージが出てしまいます。 ヘルプをちゃんと見てくださいね。 FOF_NOERRORUI を指定してください。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
SHFileOperation()を使いましょう。
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 ディレクトリ内を検索してから最後にディレクトリを削除するように するしかないと思います。 ディレクトリ内のファイルを検索するのは、FindFiestFile/FindNextFile を再帰的に使用すればできます。
補足
SHFileOperation でやってみています。 FindFiestFile/FindNextFile の場合具台的にどのようにやればいいのでしょうか? ディレクトリだった場合、再帰的な処理する部分がわかりません。
補足
現在これでやってみました、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); ファイルが読み込み専用、隠しでもできました。 ただファイル使用中の場合はエラーメッセージが出てしまいます。 これを表示しないようにする方法わかりませんか? 「ファイルまたはフォルダの削除エラー」 で確認メッセージが出てしまいます。