制作:KrK (Knuth for Kludge)
#include <stdio.h>
#include <windows.h> // Win32API
#include <shlwapi.h> // Path
//-------------------------------------------------
// ディレクトリ以下のファイルを削除
// 作成 20170620 KrK
// 引数 dir:ディレクトリ名
//-------------------------------------------------
VOID DeleteFiles(WCHAR *dir)
{
WCHAR fileWildCard[_MAX_PATH]; // 検索用文字列
BOOL existsFile; // ファイルが存在する
HANDLE hFind = NULL; // 検索ハンドル
WIN32_FIND_DATA fd; // 検索結果収納構造体
WCHAR filename[_MAX_PATH]; // ファイル名
// ファイル名取得開始
swprintf_s(fileWildCard, L"%s\\*.*", dir);
hFind = FindFirstFile(fileWildCard, &fd);
if (hFind == INVALID_HANDLE_VALUE)
{
return;
}
// ファイル名取得ループ
existsFile = TRUE;
while (existsFile != FALSE)
{
// パスを生成
PathCombine(filename, dir, fd.cFileName);
// フォルダ
if (_wcsicmp(fd.cFileName, L".") == 0)
{
}
else if (_wcsicmp(fd.cFileName, L"..") == 0)
{
}
else if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// 再帰
DeleteFiles(filename);
// 削除
RemoveDirectory(filename);
}
// ファイル
else
{
DeleteFile(filename);
}
// 次を検索
existsFile = FindNextFile(hFind, &fd);
}
// 閉じる
FindClose(hFind);
}
WCHAR dir[_MAX_DIR]; // ディレクトリ
// ファイル削除
DeleteFiles(dir);
// フォルダ削除
RemoveDirectory(dir);
最終更新:2023/05/29