ファイル一括削除

[戻る]
りん 2002/04/18(木) 09:53:18
おはようございます。
VC++6.0でファイルの一括削除を行いたいです。

@tmpfileを削除したい場合は、
----------------------------------------------------
 例:if (remove("C:\\tmp\\tmpfile")!=0)
    puts("ファイルの削除に失敗しました。");
----------------------------------------------------
で削除されますが、
Atmpfile1〜tmpfile100を削除したい場合、
----------------------------------------------------
 例:if (remove("C:\\tmp\\tmpfile*")!=0)
    puts("ファイルの削除に失敗しました。");
----------------------------------------------------
では削除されません。

for文等を使用せずにAを実現させたいのですが、
何か良い方法が御座いましたら返信の程、
宜しくお願いいたします。

sugar 2002/04/18(木) 10:26:03
詳しいことはわかりませんが、
remove()関数はワイルドカードをサポートしていないのかな?

SHFileOperation()は、ワイルドカード付きファイル名の削除をサポートしているようです。
試してみてください。

sara 2002/04/18(木) 11:24:04
SHFileOperation() については下記がとても参考になります。

http://www.kab-studio.com/Programing/Codian/ShellExtension/07.html

私もつい最近ここを読んで以前からの疑問が解けました。完全削除か、ごみ箱に移動するかはフ
ルパス指定にするか、カレントディレクトリの設定&ファイル名で削除するかで使い分けできる
みたいですね。今までは、完全削除するために、ファイル検索しながら地道に削除していまし
た。

dairygoods 2002/04/18(木) 13:05:02
あ、ホントだ、フルパスを指定しないとゴミ箱に入らないですね。

フルパスのときにゴミ箱に入れるか入れないかは、
SHFILEOPSTRUCT の fFlags に FOF_ALLOWUNDO を
指定するかしないかで制御できますよ。

sara 2002/04/18(木) 13:21:19
> SHFILEOPSTRUCT の fFlags に FOF_ALLOWUNDO 
 UNDO(元に戻す)の不許可のフラグを使えば良かったのですね。勉強になりました。
 3年位前にどのフラグを使えば良いのかが分からなくて断念していたので、教えていただいて
とても嬉しいです。

りん 2002/04/18(木) 15:43:17
[[解決]]
sugarさん、saraさん、dairygoodsさん
回答本当にありがとうございます。
大変助かりました。

古いスレッドには追加発言できません。