おはようございます。
VC++6.0でファイルの一括削除を行いたいです。
①tmpfileを削除したい場合は、
----------------------------------------------------
例:if (remove(C:\\tmp\\tmpfile)!=0)
puts(ファイルの削除に失敗しました。);
----------------------------------------------------
で削除されますが、
②tmpfile1~tmpfile100を削除したい場合、
----------------------------------------------------
例:if (remove(C:\\tmp\\tmpfile*)!=0)
puts(ファイルの削除に失敗しました。);
----------------------------------------------------
では削除されません。
for文等を使用せずに②を実現させたいのですが、
何か良い方法が御座いましたら返信の程、
宜しくお願いいたします。
詳しいことはわかりませんが、
remove()関数はワイルドカードをサポートしていないのかな?
SHFileOperation()は、ワイルドカード付きファイル名の削除をサポートしているようです。
試してみてください。
SHFileOperation() については下記がとても参考になります。
http://www.kab-studio.com/Programing/Codian/ShellExtension/07.html
私もつい最近ここを読んで以前からの疑問が解けました。完全削除か、ごみ箱に移動するかはフ
ルパス指定にするか、カレントディレクトリの設定&ファイル名で削除するかで使い分けできる
みたいですね。今までは、完全削除するために、ファイル検索しながら地道に削除していまし
た。
あ、ホントだ、フルパスを指定しないとゴミ箱に入らないですね。
フルパスのときにゴミ箱に入れるか入れないかは、
SHFILEOPSTRUCT の fFlags に FOF_ALLOWUNDO を
指定するかしないかで制御できますよ。
> SHFILEOPSTRUCT の fFlags に FOF_ALLOWUNDO
UNDO(元に戻す)の不許可のフラグを使えば良かったのですね。勉強になりました。
3年位前にどのフラグを使えば良いのかが分からなくて断念していたので、教えていただいて
とても嬉しいです。
sugarさん、saraさん、dairygoodsさん
回答本当にありがとうございます。
大変助かりました。