我需要设计一个程序,任务是删除指定目录C:\temp下面修改时间超过30天的旧文件,麻烦大虾们帮忙,我一定给分!!给我个完全版(包括头文件)我目前基本什么都不懂呢希望来个现成的谢谢了如果需要请给我发邮件[email protected]请注明“大虾为你解答问题”谢谢各位了,感激不尽!

解决方案 »

  1.   


    #include "io.h"
    #include "stdio.h"
    #include "time.h"/*********************************************************************
    * find_proc:
    * the callback function called while a file matched
    * return true to cancel search
    *********************************************************************/
    typedef bool (*find_proc)(const char* path, _finddata_t *fdata);/*********************************************************************
    * SearchFile: file search function
    * return true if search is cancelled, else return true
    * the file parameter specifys the filespec to search
    *********************************************************************/
    bool SearchFile(const char* path, const char* file, find_proc ffind)
    {
      ASSERT(path);
      ASSERT(file);
      ASSERT(ffind);  char pathstr[MAX_PATH];
      strcpy(pathstr, path);  // remove the last '\'
      int len = strlen(path);
      if(pathstr[len-1] == '\\')
        pathstr[len-1] = '\0';  char filespec[MAX_PATH];
      sprintf(filespec, "%s\\%s", pathstr, file);
      
      _finddata_t data;
      long handle = _findfirst(filespec, &data);
      if(handle == -1) return true;  // repeat to search
      bool cancel = false;
      do{
        if(data.attrib&_A_SUBDIR)
        {
          // search the subdir if the subdir is not "." and not ".."
          if( strcmp(data.name, ".") && strcmp(data.name, "..") ) 
          {
            sprintf(filespec, "%s\\%s", pathstr, data.name);
            if( cancel = SearchFile(filespec, file, ffind) ) 
              break;
          }
        }
        // call the find_proc to process this file
        // break the loop if find_proc return false
        else if( cancel = (*ffind)(pathstr, &data) ) 
          break;
      }
      while(_findnext(handle, &data) != -1);  _findclose(handle);
      return cancel;
    }bool DelOldFile(const char* path, _finddata_t *fdata)
    {
      time_t t;
      time(&t);
      t += 30*24*60*60;
      
      char buf[MAX_PATH];
      
      if(fdata->time_write < t)
      {
        sprintf(buf, "%s\\%s", path, fdata->name);
        TRACE("remove %s\r\n", buf);
        remove(buf);
      }
      
      return false;
    }int main(int argc, char* argv[])
    {
      SearchFile("C:\\temp\\", "*.tmp", DelOldFile);
    }
      

  2.   

    这个代码好长阿。麻烦大虾帮我把参数C:\temp和30天这2参数输进去,我现在还处于盲流阶段呵呵
      

  3.   

    大虾阿,我用你这个代码VC6.0编译错误啊
    bool DelOldFile(const char* path, _finddata_t *fdata)
    {
      time_t t;
      time(&t);
      t += 30*24*60*60;
      
      char buf[MAX_PATH];
      
      if(fdata->time_write < t)
      {
        sprintf(buf, "%s\\%s", path, fdata->name);
        TRACE("remove %s\r\n", buf);
        remove(buf);
      }
      
      return false;
    }int main(int argc, char* argv[])
    {
      SearchFile("C:\\temp\\", "*.tmp", DelOldFile);
    }
    错误如下C:\程序\删除.cpp(3) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(3) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(3) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(3) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(3) : error C2065: 'time_t' : undeclared identifier
    C:\程序\删除.cpp(3) : error C2146: syntax error : missing ';' before identifier 't'
    C:\程序\删除.cpp(3) : error C2065: 't' : undeclared identifier
    C:\程序\删除.cpp(4) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(4) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(4) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(4) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(4) : error C2065: 'time' : undeclared identifier
    C:\程序\删除.cpp(5) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(5) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(5) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(5) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(6) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(6) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(6) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(6) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(7) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(7) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(7) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(7) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(7) : error C2065: 'MAX_PATH' : undeclared identifier
    C:\程序\删除.cpp(7) : error C2057: expected constant expression
    C:\程序\删除.cpp(7) : error C2466: cannot allocate an array of constant size 0
    C:\程序\删除.cpp(7) : error C2133: 'buf' : unknown size
    C:\程序\删除.cpp(8) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(8) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(8) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(8) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(9) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(9) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(9) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(9) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(9) : error C2065: 'fdata' : undeclared identifier
    C:\程序\删除.cpp(9) : error C2227: left of '->time_write' must point to class/struct/union
    C:\程序\删除.cpp(10) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(10) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(10) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(10) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(11) : error C2065: 'sprintf' : undeclared identifier
    C:\程序\删除.cpp(11) : error C2227: left of '->name' must point to class/struct/union
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(12) : error C2065: 'TRACE' : undeclared identifier
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(13) : error C2065: 'remove' : undeclared identifier
    C:\程序\删除.cpp(14) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(14) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(14) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(14) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(15) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(15) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(15) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(15) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(16) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(16) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(16) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(16) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(21) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(21) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(21) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(21) : error C2018: unknown character '0xa1'
    C:\程序\删除.cpp(21) : error C2065: 'SearchFile' : undeclared identifier
    C:\程序\删除.cpp(22) : warning C4508: 'main' : function should return a value; 'void' return type assumed
      

  4.   

    贴上来的代码中用来缩进的是全角空格,要是直接拷进cpp文件中编辑是不认的,因此编译包错。
    你可以用查找替换把它全部换成半角空格//这里就是计算当前时间以前30天:
    time(&t); //取当前时间,单位秒
    t -= 30*24*60*60; //减去30天的秒数,24小时/天,60分/小时,60秒/分//如果修改时间在30天以前
    if(fdata->time_write < t)//指定路径和文件匹配符,如:"C:\\temp", "*.*",搜C:\temp下所有文件,用"*.txt"则搜所有
    //文本文件,这与windows的文件查找匹配方式是一样的
    SearchFile("C:\\temp\\", "*.tmp", DelOldFile);  //搜C:\temp\*.tmp