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

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

免責事項