(امید)
دوشنبه 12 اسفند 1381, 11:09 صبح
برداشت شده از barnamenevis.com
__________________________________________________ ________
با عرض سلام خدمت دوستان گرامی
آیا متدی برای از بین بردن دایرکتوری غیر خالی در ویندوز وجود دارد؟
موفق باشید
یا علی(ع)
با سلام؛
RmDir و RemoveDir را بخوان
ح.ر
دوست عزیز در زیر تابعی نوشتم که نام دایرکتوری را بصورت مسیر کامل گرفته و تمامی
فایلها و زیر دایرکتوریهای آنرا حذف و خود آنرا نیز حذف میکند.
خیلی تست نشده ولی تا حالا جواب داده.
Procedure CustomDelete(WildCard : String) ;
Var Status : Integer ;
SearchRec : TSearchRec ;
S : String ;
Begin
Status :=
FindFirst(WildCard,faReadOnly+faHidden+faSysFile+f aDirectory+faAnyFile, SearchRec) ;
While Status = 0 Do
Begin
If (SearchRec.Name <> '.') And (SearchRec.Name <> '..') Then
Begin
S := Copy(WildCard, Length(WildCard)-2, 3) ;
Delete(WildCard, Length(WildCard)-2, 3) ;
If SearchRec.Attr = faDirectory Then
Begin
CustomDelete(WildCard+SearchRec.Name+'\'+'*.*') ;
RemoveDir(WildCard+SearchRec.Name) ;
WildCard := WildCard + S ;
End
Else
If SearchRec.Attr <> faDirectory Then
Begin
If Not DeleteFile(WildCard+SearchRec.Name) Then
MessageDlg(['اشکال در حذف فایل'],mtError, [bkOk]) ;
DeleteFile(WildCard+SearchRec.Name) ;
WildCard := WildCard + S ;
End ;
End ;
Status := FindNext(SearchRec) ;
End ;
End ;
بعوان مثال با این صورت صدا بزنید :
CustomDelete('C:\TEMP\*.*')
بابک یعقوبی
با عرض سلام
جناب یعقوبی همانطور که در بالا گفته ام بنده نمی خواهم پاک کردن فایل به فایل انجام دهم چرا که تعداد فایل های موجود در دایرکتوریهای مورد نظر من بسیار زیاد است. بلکه می خواهم کل دایرکتوری را مستقل از تعداد فایل های موجود در آن پاک کنم.
موفق باشید
یا علی(ع)
دوست عزیز شما دیده اید که خود ویندوز یک همچین کاری بکند ؟
علت آن این است که حتی روشی وجود دارد که شما میتوانید بر روی هارد از قسمت FAT
دایرکتوری خود را پیدا کرده و آن را از همانجا حذف کنید. ولی مسئله اینجاست در FAT
فایلهای مربوط به آن دایرکتوری بدون Parent میمانند و این برای ویندوز یعنی اینکه اولا
فضای مربوطه هنوز خالی نشده ثانیا در اولین ScanDisk که انجام شود تمامی فایلهای
داخل آن دایرکتوری بعنوان Lost Cluster مشخص میشود.
حالا انتخاب با خودتان است. به هر صورت که دوست دارید عمل کنید.
بابک یعقوبی
__________________________________________________ ________
با عرض سلام خدمت دوستان گرامی
آیا متدی برای از بین بردن دایرکتوری غیر خالی در ویندوز وجود دارد؟
موفق باشید
یا علی(ع)
با سلام؛
RmDir و RemoveDir را بخوان
ح.ر
دوست عزیز در زیر تابعی نوشتم که نام دایرکتوری را بصورت مسیر کامل گرفته و تمامی
فایلها و زیر دایرکتوریهای آنرا حذف و خود آنرا نیز حذف میکند.
خیلی تست نشده ولی تا حالا جواب داده.
Procedure CustomDelete(WildCard : String) ;
Var Status : Integer ;
SearchRec : TSearchRec ;
S : String ;
Begin
Status :=
FindFirst(WildCard,faReadOnly+faHidden+faSysFile+f aDirectory+faAnyFile, SearchRec) ;
While Status = 0 Do
Begin
If (SearchRec.Name <> '.') And (SearchRec.Name <> '..') Then
Begin
S := Copy(WildCard, Length(WildCard)-2, 3) ;
Delete(WildCard, Length(WildCard)-2, 3) ;
If SearchRec.Attr = faDirectory Then
Begin
CustomDelete(WildCard+SearchRec.Name+'\'+'*.*') ;
RemoveDir(WildCard+SearchRec.Name) ;
WildCard := WildCard + S ;
End
Else
If SearchRec.Attr <> faDirectory Then
Begin
If Not DeleteFile(WildCard+SearchRec.Name) Then
MessageDlg(['اشکال در حذف فایل'],mtError, [bkOk]) ;
DeleteFile(WildCard+SearchRec.Name) ;
WildCard := WildCard + S ;
End ;
End ;
Status := FindNext(SearchRec) ;
End ;
End ;
بعوان مثال با این صورت صدا بزنید :
CustomDelete('C:\TEMP\*.*')
بابک یعقوبی
با عرض سلام
جناب یعقوبی همانطور که در بالا گفته ام بنده نمی خواهم پاک کردن فایل به فایل انجام دهم چرا که تعداد فایل های موجود در دایرکتوریهای مورد نظر من بسیار زیاد است. بلکه می خواهم کل دایرکتوری را مستقل از تعداد فایل های موجود در آن پاک کنم.
موفق باشید
یا علی(ع)
دوست عزیز شما دیده اید که خود ویندوز یک همچین کاری بکند ؟
علت آن این است که حتی روشی وجود دارد که شما میتوانید بر روی هارد از قسمت FAT
دایرکتوری خود را پیدا کرده و آن را از همانجا حذف کنید. ولی مسئله اینجاست در FAT
فایلهای مربوط به آن دایرکتوری بدون Parent میمانند و این برای ویندوز یعنی اینکه اولا
فضای مربوطه هنوز خالی نشده ثانیا در اولین ScanDisk که انجام شود تمامی فایلهای
داخل آن دایرکتوری بعنوان Lost Cluster مشخص میشود.
حالا انتخاب با خودتان است. به هر صورت که دوست دارید عمل کنید.
بابک یعقوبی