清理文件2

// FileCleanerDlg.h : 头文件
//

#pragma once
#include <vector>
using std::vector;

// CFileCleanerDlg 对话框
class CFileCleanerDlg : public CDialogEx
{
// 构造
public:
    CFileCleanerDlg(CWnd* pParent = NULL);    // 标准构造函数

// 对话框数据
    enum { IDD = IDD_FILECLEANER_DIALOG };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedButton1();
    CString m_szPath;
    CString m_szFormat;
    CString m_szClearFile;
    void ErgodicFile(TCHAR  szPath[MAX_PATH]);
    vector<CString> m_vecPath;

    afx_msg void OnBnClickedButton2();
    afx_msg void OnBnClickedButton3();
};
// FileCleanerDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "FileCleaner.h"
#include "FileCleanerDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// 对话框数据
    enum { IDD = IDD_ABOUTBOX };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()

// CFileCleanerDlg 对话框

//, m_strPath(_T(""))
//, m_strShow(_T(""))
//, m_Filter(L".txt.cpp.exe")

//变量的初始化,过滤文件的格式初始化
CFileCleanerDlg::CFileCleanerDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(CFileCleanerDlg::IDD, pParent)
    , m_szPath(_T(""))
    , m_szFormat(L".txt.exe")
    , m_szClearFile(_T(""))
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFileCleanerDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_szPath);
    DDX_Text(pDX, IDC_EDIT3, m_szFormat);
    DDX_Text(pDX, IDC_EDIT2, m_szClearFile);
}

BEGIN_MESSAGE_MAP(CFileCleanerDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CFileCleanerDlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &CFileCleanerDlg::OnBnClickedButton2)
    ON_BN_CLICKED(IDC_BUTTON3, &CFileCleanerDlg::OnBnClickedButton3)
END_MESSAGE_MAP()

// CFileCleanerDlg 消息处理程序

BOOL CFileCleanerDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO:  在此添加额外的初始化代码

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CFileCleanerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CFileCleanerDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 用于绘制的设备上下文

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // 使图标在工作区矩形中居中
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // 绘制图标
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CFileCleanerDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}

//选择文件夹
void CFileCleanerDlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知处理程序代码
    TCHAR strPath[MAX_PATH];         //设置变量保存路径,此路径显示在弹出框顶部
    BROWSEINFO bi = {};
    bi.hwndOwner = m_hWnd;           //
    bi.pszDisplayName = strPath;
    LPCITEMIDLIST   pid = SHBrowseForFolder(&bi);
    SHGetPathFromIDList(pid, strPath);
    m_szPath = strPath;
    UpdateData(FALSE);
    CoTaskMemFree((LPVOID)pid);

}

//遍历文件
void CFileCleanerDlg::ErgodicFile(TCHAR  szPath[MAX_PATH])
{
    CString strPath = szPath;
    strPath += L"\\*";
    WIN32_FIND_DATA fi = {};
    HANDLE hFile = FindFirstFile(strPath, &fi);
    if (hFile == INVALID_HANDLE_VALUE)
    {
        return;
    }
    do
    {
        if (!lstrcmp(fi.cFileName, L".") || !lstrcmp(fi.cFileName, L".."))
        {
            continue;
        }
        TCHAR *p = PathFindExtension(fi.cFileName);
        if (-1 == m_szFormat.Find(p))
        {
            continue;
        }
        if (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            CString strDIr = szPath;
            strDIr += L"\\";
            strDIr += fi.cFileName;
            ErgodicFile(strDIr.GetBuffer());
            continue;
        }
        CString strDIr = szPath;
        strDIr += L"\\";
        strDIr += fi.cFileName;
        m_vecPath.push_back(strDIr);
    } while (FindNextFile(hFile, &fi));

}

//获取文件夹中的文件
void CFileCleanerDlg::OnBnClickedButton2()
{
    // TODO:  在此添加控件通知处理程序代码
    /*m_szClearFile = L"";*/
    m_vecPath.clear();
    ErgodicFile(m_szPath.GetBuffer());
    for (DWORD i = 0; i < m_vecPath.size(); i++)
    {
        m_szClearFile += m_vecPath[i];
        m_szClearFile += L"\r\n";
    }
    UpdateData(FALSE);
}

//删除文件
void CFileCleanerDlg::OnBnClickedButton3()
{
    for (int i = 0; i < m_vecPath.size(); i++)
        DeleteFile(m_vecPath[i].GetString());
    MessageBox(TEXT("删除成功!"), NULL, 0);

    m_szClearFile = "";
    UpdateData(FALSE);
}
时间: 2024-10-12 00:24:02

清理文件2的相关文章

用DOS批处理实现FTP自动上传、下载、清理文件

最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传.下载.清理文件的程序.赶紧 记录下来,以备日后之用.功能介绍:自动登录远程主机,并到指定目录下下载文件,下载完成后,检查下载到本地的文件并删除主机上的文件.程序名称及功能:getfile.bat:主程序,检查配置目录及调用ftp脚本.getfile.ftp:ftp运行脚本.movefile.bat:删除远程主机上的文件.以下是批处理的具体内容. 1.getfile.bat内容: @echo off REM 配置基

清理文件的python脚本

由于刚开始在cnblog写博客,发现网页版没法直接贴图片,加上使用的是mac电脑,快捷键直接把图片存到桌子上. 外加下载东西一大堆. 就动手写了个小脚本,然后放到了local bin的文件夹,终于可以减低一些鼠标负担. 代码如下: #!/Users/alex/anaconda/bin/python import os,re,shutil def delMess(path,reStr,flag=0): os.chdir(path) fileList=os.listdir(path) if flag

find结合重定向符清理文件

大家知道,清理日志文件时,如果该文件正在被某进程使用,则系统不会删除,只会标注为deleted(使用lsof|grep deleted可以查看哪些文件被标注为这个状态),所以这部分的磁盘空间不会释放,那么如何在不重启进程的情况下,让空间释放呢?使用重定向符清空文件即可. 假设日志文件为/var/log/tomcat/info.log,则使用命令:  > /var/log/tomcat/info.log 当该目录下有多个文件时,可以结合find查找文件,但是使用下面的命令无效(引起Shell的歧义

iOS 清理文件缓存

本文摘自:<msp的昌伟哥哥-iOS开发-清理缓存功能的实现>摘下来的目的就是为了能够学习.还望看到文章的同学,前往原创的博客园.感谢msp的昌伟哥哥的分享精神. 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.删除缓存文件的实现. 获取缓存文件的大小 由于缓存文件存

清理文件

#pragma once #include <vector> using std::vector; // CDlgB 对话框 class CDlgB : public CDialogEx { DECLARE_DYNAMIC(CDlgB) public: CDlgB(CWnd* pParent = NULL); // 标准构造函数 virtual ~CDlgB(); // 对话框数据 enum { IDD = IDD_DIALOG2 }; protected: virtual void DoDa

根据正则表达式来清理文件夹

http://www.cnblogs.com/itech/archive/2011/03/22/1991756.html 清除指定目录下的子文件, 只保留与给定的正则表达式匹配且最后创建的N个. 代码: import osimport sysimport reimport shutil def cleanUp(dir, regrex, num):  if not os.path.exists(dir) and not os.path.isdir(dir) :     print 'path %s

Windows定时清理文件处理脚本

一.运行CMD,输入forfile/?,即可获取forfile的使用方法 /P  路径 /M  文件类型 /D  时间   + | -     +:之后    - :之前   example:-2   2天之前的数据 /C  command命令 二.打开记事本,写入如下语句 @echo off forfiles /P "E:\数据库备份" /M *.html /D -2 /C "cmd/c del/F/s/q @file" 这句话的意思是,删除路径:E:\数据库备份

Linux批量清理多个文件内容而不删除文件

清理单个文件,可以这样:echo > myLog.log 但是,如果我要清理一堆文件,比如在/logs目录下面的所有以.log结尾的文件的内容,而不删除文件,该如何操作呢? 我一开始的语句是这样的: find /logs -name "*.log" -exec echo > {} \; 但是,运行的结果是新建了一个名为“{}”的文件,并没有执行清理文件内容的操作. 我询问了大神之后,我的语句是这样的: for i in `find . -name "*.log&q

#批量清理某目录下的文件或移除某目录下的文件

#!/bin/bash  #批量清理某目录下的文件或移除某目录下的文件 basedir=/data/db/renewal/snapshots   #执行目录 clear_before_days=95       #清理的时间,100代表100天前的数据 logdir=/data/log/clear      #日志路径 log=$logdir/clear.log      #日志文件 file_key="snapshot"       #清理文件包含关键字 is_font=1