XP SP2
VC++ SP6.0
フォルダ配下にある全てのファイルを一括削除しようとしています。
DeleteFile()にワイルドカードを含んだパス(例: C:\TMP\*)を指定して
プログラムを実行したところDeleteFile()でエラーとなりました。
(GetLastError()でエラーコードが0x0000007bが返却されていました。)
DeleteFile()ではファイルの一括削除はできないのでしょうか?
できないのであれば、FindFirstFile()を使用してフォルダ内のファイルを一件ずつ
検索して削除していこうと思います。
※他にファイルの一括削除に関していい方法がありましたらご教授できないでしょうか?
SHFileOperation関数が使えるかも。
Blueさん、ありがとうございます。
MSDNでSHFileOperation()を調べてみましたが一括削除はできそうですが
削除したファイルはごみ箱へ行くみたいで、完全に削除するにはDeleteFile()を
使用するようにと説明がありました。
せっかく教えて頂いたのですが、
削除したファイルはごみ箱へ残したくはありませんのでDeleteFile()で一件づつ
ファイルを削除していこうと思います。
ご教授ありがとうございました。
FOF_ALLOWUNDOを指定しなければ、ゴミ箱えいかないんじゃないかなぁ。
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/SHFILEOPSTRUCT.html
#include <windows.h>
int main()
{
SHFILEOPSTRUCT sfo = { 0 };
sfo.wFunc = FO_DELETE;
sfo.pFrom = TEXT( D:\\Temp\\*.tmp );
sfo.fFlags = FOF_NOCONFIRMATION;
::SHFileOperation( &sfo );
return 0;
}
でも、ワイルドカードの削除は結構注意が必要そうなので、ファイルの数だけぐるぐる
回ったほうが無難そう。