# Native Code > برنامه نویسی در 6 VB > کامپوننت ها و ابزارهای کاربردی در VB6 > سوال: حذف کردن فایل

## www.pc3enter.tk

سلام دوستان 
من می خواستم بپرسم که 
در فلش من یک ویروس وجود داره که می آید تمام فایل ها را پنهان و بعد از تمام فایل ها یک شورت کات تهیه می کند

می خواستم بدانم چطوری می توانم تمام فایل های شورت کات را حذف کنم
(البته دستور آن را می دانم ولی 37 تا شورت کات را با 37 دستور پاک کردن غیر عقلی به نظر می رسد)

kill "i:\music.ink"

و یک سوال دیگه که دوباره چطوری می توانم فایل های پنهان را برگردانم
(البته دستور این هم می دا .......)

setattr ("i:\music"),vbnoraml

امیدوارم منظورم را رسانده باشم

باتشکر

----------


## returnx

برای اینکار با کنترل Filebox اسم فایل های ShortCut رو بگیر بعد یک جا لیستشون کن بعد با یک حلقه پدرشون در بیار...
واست یک تیکه کدی که خودم واسه ی یک برنامه دیگه نوشته بودم و میزارم باید یکم توش تغییرات ایجاد کنی (شرمنده وقت نداشتم):
    Dim extension As String * 4
    For i = 0 To File1.ListCount - 1
        File1.ListIndex = i
       '-----------Detect Extension Of File & Set Icon---------------
        extension = Right(File1.FileName, 4)
              
        If extension = ".ppt" Or extension = ".pps" Or extension = ".ppx" Or extension = "pptx" Then
            ListView1.ListItems.Add , , File1.FileName, 3, 3
        ElseIf extension = ".pdf" Or extension = ".PDF" Then
            ListView1.ListItems.Add , , File1.FileName, 2, 2
        ElseIf extension = ".bmp" Or extension = ".jpg" Or extension = ".png" Or extension = ".gif" Then
            ListView1.ListItems.Add , , File1.FileName, 4, 4
        ElseIf extension = ".doc" Or extension = "docx" Then
             ListView1.ListItems.Add , , File1.FileName, 5, 5
        ElseIf extension = ".mpg" Or extension = ".mp4" Or extension = ".mov" Then
             ListView1.ListItems.Add , , File1.FileName, 6, 6
        ElseIf extension = "html" Or extension = ".htm" Or extension = ".com" Then
            ListView1.ListItems.Add , , File1.FileName, 7, 7
        ElseIf extension = ".zip" Or extension = ".rar" Then
            ListView1.ListItems.Add , , File1.FileName, 8, 8
        ElseIf extension = ".exe" Then
            ListView1.ListItems.Add , , File1.FileName, 9, 9
        ElseIf extension = ".bas" Then
            ListView1.ListItems.Add , , File1.FileName, 11, 11
        ElseIf extension = ".vbp" Then
            ListView1.ListItems.Add , , File1.FileName, 12, 12
        ElseIf extension = ".asm" Then
            ListView1.ListItems.Add , , File1.FileName, 13, 13
        ElseIf extension = ".lsc" Then
            ListView1.ListItems.Add , , File1.FileName, 14, 14
        End If
        
    Next i
    If Dir1.Path <> sub_path Then
        ListView1.ListItems.Add , "back", , 10, 10
        
    End If

اون 4 خط اول مشکلت رو بر طرف میکنه ، بقیش بدردت نمیخوره ، واست گذاشتم تا روش کار رو متوجه بشی...
فقط اگه extension برابر پسوند فایل ShortCut بود به لیستت اظافه کن ، بقیشم که مشخصه...
فقط چون من نیاز داشتم فایل هایی مثل Docx که پسوندشون 4 کارکتری تشخیص بدم طول extension رو چهار کارکتر گرفتم که شما باید پسوند های سه کارکتری رو به علاوه "." بدید  مثلا "PDF."...
موفق باشید.../

----------


## www.pc3enter.tk

دستون درد نکنه همین که من را راهنمایی کردید خیلی ممنونم

----------


## www.pc3enter.tk

دوست عزیز من این کار را انجام دادم ولی جواب نداد و error داد

اگر زحمتی نیست پروژه را برایم لود کن تا ببینم مشکل از کجاست
 باتشکر

----------


## returnx

اون تیکه کد از یک پروژه دیگه هست که خیلی زیاده و نمیتونم پروژه رو بزارم اما میتونم واستون بک سورس کوچیک درست کنم...
در ضمن یک راه ساده تر هم به ذهنم رسید...
اول شما path کنترل Filelistbox رو برابر درایو فلشتون قرار بده بعد خاصیت pattern کنترل File Listbox رو برابر *.lnk (بخاطر بهم ریختگی شرمنده) اینجوری فقط فایل های ShortCut لیست میشن ...
بقیش که فکر کنم مشخصه...
اگه باز هم نتونستی ، واست یک برنامه کوچیک درست میکنم...

----------


## www.pc3enter.tk

نه نشد روش کار کردم 

من path را روی ink تنظیم کردم ولی باز هم ارور خطا میده

قدم به قدم کاری که گفتی انجام دادم ولی نشد

حالا بابد چه کار کنم

----------


## returnx

> حالا بابد چه کار کنم


حالا هیچی ، فقط این پروژه ای که نوشتم رو یک نگاهی کنید...
تو Textbox اولی فقط کافیه فایل هایی که میخوای پاکشن رو بنویسی که واسه شما میشه *.lnk بعد تمام فایل های ShortCut لیست میشن بعد دکمه Delete رو میزنید...
تذکر: دقت کن که تو اون textbox اولیه که جلوش نوشتم All Or Part of... فایل هایی که میخوای پاکشن رو بنویسی وگرنه هر فایلی که تو کنترل File List Box که گذاشتم باشه ، برنامه پاک میکنه...
(از ما گفتن بود،اگه اشتباهی تو نمایش فایل ها انجام دادید و فایل هاتون پاک شد اونموقع مسئولیت با خودتونه... :لبخند گشاده!: )

----------


## www.pc3enter.tk

دستون درد نکنه کارم راه افتاد

برنامه اولش اروور داد ولی بعدش اروور آن را بر طرف کردم
=================
حالا من برای برگردادن فولدرها از    هیدن   /    به   شوو   از این دستور استفاده کردم ولی خوب جواب نداد

  SetAttr (File1.Path & File1.FileName), vbNormal

البته داخل 1 file پوشه ی hidden را نشان نمی دهد

گزینه ی hidden را شوو کردم ولی نشان نداد 

اروور هم نداد

What should I do now

----------


## returnx

> برنامه اولش اروور داد ولی بعدش اروور آن را بر طرف کردم


من تست کرده بودم چه خطایی داشت !؟ نباید خطایی میداشت!؟



> البته داخل 1 file پوشه ی hidden را نشان نمی دهد
> 
> گزینه ی hidden را شوو کردم ولی نشان نداد


خوب نباید هم نشون بده ، چون کنترل Listbox فقط فایل ها رو لیست میکنه ، برای نشون دادن فولدر ها شما باید از کنترل Directory یا همون Dir استفاده کنید ، یک تیکه کد کوچیک از همون میزارم نگاه کن:
    Dim token As String * 1
    Dim folder_name As String
    Dim temp As String
    Dim last_index As Integer
    ListView1.ListItems.Clear
    Dir1.ListIndex = first_index
    For i = Dir1.ListIndex + 1 To Dir1.ListCount - 1
        Dir1.ListIndex = i
        'Dir1.Path = Dir1.List(i)
        temp = Dir1.List(i)
        For j = Len(temp) To 1 Step -1
            token = Mid(temp, j, 1)
            If token = "\" Then
                folder_name = Mid(temp, j + 1, Len(temp) - (j - 1))
               Exit For
            End If
        Next j
        ListView1.ListItems.Add , , folder_name, 1, 1
        'Dir1.ListIndex = last_index
    Next i
    Dir1.ListIndex = first_index

البته باید یکسری تغییرات توش بدی ، من این و اسه ی یک List View نوشتم که تمام فولدر های دایرکتوری رو تو ListView بتونم نمایش بدم ، شما میتونی بسته به نیازت این تکه کد رو تغییر بدی...

----------


## shedayat

سلام.
 با یه دستور ساده می تونین این کار رو انجام بدین:
دستور برای از حالت مخفی در آووردن تموم پوشه ها و زیر پوشه هاش:
Shell "attrib -h -s X:\* "

برای حذف کردن فایل ها با پسوند مورد نظرتون از این کد استفاده کنید:
Shell "cmd /c " & "del X:\*.lnk"

----------

