請問判斷檔案修改時間藉以刪除檔案與其所在資料夾的問題! |
尚未結案
|
wrl1211
一般會員 發表:1 回覆:3 積分:0 註冊:2007-02-13 發送簡訊給我 |
各位好 小弟在爬了不少文之後 寫了以下的程式碼 問題是我無法刪除判斷過後需刪除的資料夾 煩請各位大大幫小弟看一下 謝謝! <textarea class="cpp" rows="10" cols="60" name="code">//---------------------------------------------------------------------------
TStringList* __fastcall TForm1::CreateFileList(AnsiString Dir)
{
TStringList* P = new TStringList();
CreatingFileList(P, Dir);
return P;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CreatingFileList(TStringList* P, AnsiString SubDir)
{
TSearchRec F;
AnsiString szFileName,szFileTime,str,dmonth,dday;
SYSTEMTIME SystemTime;
FILETIME FileTime;
int dataLen,LastLen;
//FindFirst returns 0 if a file was successfully located
if(FindFirst(SubDir "\\*.*", faAnyFile, F)==0)
{
do{
if(F.Name!="." && F.Name!=".." && F.Name!="ABC")//不搜尋資料夾ABC
{
if((F.Attr & faDirectory)==faDirectory)
{
CreatingFileList(P, SubDir "\\" F.Name);
}
else if(F.Name.UpperCase().Pos(".TXT") )
{
P->Add(SubDir "\\" F.Name);
szFileName=SubDir "\\" F.Name;
szFileTime = FormatDateTime("yyyy-mm-dd",FileDateToDateTime(FileAge(szFileName)));
ListBox2->Items->Add(szFileName);
dataLen=szFileTime.Length();
dmonth=szFileTime.SubString(6,2);
dday=szFileTime.SubString(9,2);
GetSystemTime(&SystemTime);
if (StrToInt(dday)==13)
{
DeleteFile(szFileName);
RemoveDir(SubDir);
ListBox3->Items->Add(SubDir);
}
}
}
}while(FindNext(F)==0);
FindClose(F);
}
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TStringList *P = CreateFileList("C:\\TEMP");
ListBox1->Items->Text = P->Text;
delete P;
}
</textarea>
------
學海無崖 BCB新手 請各位多多指教 謝謝! 編輯記錄
taishyang 重新編輯於 2007-07-23 11:22:26, 註解 將文章分類成問題‧
|
wrl1211
一般會員 發表:1 回覆:3 積分:0 註冊:2007-02-13 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
wrl1211
一般會員 發表:1 回覆:3 積分:0 註冊:2007-02-13 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
看看這篇吧(取得與設定文件目錄的時間)~雖然是VC++的,但是CONSOLE程式,寫法大同小異。
http://www.pcdog.com/p/html/20041122/221120042691_1.htm |
wrl1211
一般會員 發表:1 回覆:3 積分:0 註冊:2007-02-13 發送簡訊給我 |
|
renard
一般會員 發表:3 回覆:43 積分:24 註冊:2007-06-29 發送簡訊給我 |
//刪除C:\temp下過時的檔案
AnsiString dir="C:\\temp\\"; int res=3;//保留三天 if(DirectoryExists(dir)) { FileListBox1->Directory=dir; FileListBox1->Mask="*.*"; FileListBox1->Update(); for(int i=0;i小於FileListBox1->Items->Count;i ) { AnsiString file=dir FileListBox1->Items->Strings[i]; TDateTime FDate=FileDateToDateTime(FileAge(file)); TDateTime RDate=Date()-res; if(RDate>FDate)DeleteFile(file); } } P.S.未驗證 |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |