制作: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