DeleteFile()でワイルドカードを使用してファイル削除 – プログラミング – Home

DeleteFile()でワイルドカー...
 
通知
すべてクリア

[解決済] DeleteFile()でワイルドカードを使用してファイル削除


とこのま
 とこのま
(@とこのま)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

XP SP2
VC++ SP6.0

フォルダ配下にある全てのファイルを一括削除しようとしています。
DeleteFile()にワイルドカードを含んだパス(例: C:\TMP\*)を指定して
プログラムを実行したところDeleteFile()でエラーとなりました。
(GetLastError()でエラーコードが0x0000007bが返却されていました。)

DeleteFile()ではファイルの一括削除はできないのでしょうか?
できないのであれば、FindFirstFile()を使用してフォルダ内のファイルを一件ずつ
検索して削除していこうと思います。
※他にファイルの一括削除に関していい方法がありましたらご教授できないでしょうか?


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

SHFileOperation関数が使えるかも。


返信引用
とこのま
 とこのま
(@とこのま)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

Blueさん、ありがとうございます。
MSDNでSHFileOperation()を調べてみましたが一括削除はできそうですが
削除したファイルはごみ箱へ行くみたいで、完全に削除するにはDeleteFile()を
使用するようにと説明がありました。

せっかく教えて頂いたのですが、
削除したファイルはごみ箱へ残したくはありませんのでDeleteFile()で一件づつ
ファイルを削除していこうと思います。

ご教授ありがとうございました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

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;
}

でも、ワイルドカードの削除は結構注意が必要そうなので、ファイルの数だけぐるぐる
回ったほうが無難そう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました