ディレクトリ以下のファイルを削除

制作:KrK (Knuth for Kludge)

情報・ご感想はこちら

KrK's Cracked Text > はしくれコード


環境

ソース


#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

免責事項