2015-03-03 33 views
0

我一直在編寫代碼來刪除我們今天面臨的常見病毒,它只是將所有數據放入一個顯示無標題的特殊文件夾中。實際上它是VB中的一個chr(160)。當我得到目錄列表時,它顯示爲空名稱,但我無法更改其名稱或查看其內容。VB中的Usb特殊字符(病毒感染)目錄數據

P.S.你可以通過名字Alt+0160

For Each foldername In Directory.GetDirectories("d:\x\ ") 
    TextBox1.Text += foldername + vbCrLf 
    If fname = " " Then  
     FileIO.FileSystem.RenameDirectory(foldername, "temp")  
    End If 
Next 
+0

你如何改變它的名稱或查看內容?通過代碼或通過Windows資源管理器? – mccainz 2015-03-03 13:37:10

+0

這對我來說很好,我也可以更改名稱並查看內容。如何發佈一些你堅持的代碼? – Codexer 2015-03-03 16:07:42

+0

'對於每個文件夾名在Directory.GetDirectories( 「d:\ X \ 」) TextBox1.Text + = FOLDERNAME + vbCrLf 如果FNAME =「」 然後 FileIO.FileSystem.RenameDirectory(文件夾名, 「TEMP」) 結束如果 Next'這是遍歷目錄的簡單代碼...我創建了D:\ x,其中存在特殊文件夾(名稱爲alt + 0160)。它顯示的名稱,但不是該文件夾內的內容或無法重命名該文件夾 – user171461 2015-03-04 04:17:34

回答

1

你做得對CHR(160)的比較和空格字符創建文件夾進行測試。嘗試比較fname與不間斷空格字符。 chr(160)返回一個字符類型,所以你需要確保fname是相同的類型。

For Each foldername In Directory.GetDirectories("d:\x\ ") 
    TextBox1.Text += foldername + vbCrLf 
    If fname = chr(160) Then  
     FileIO.FileSystem.RenameDirectory(foldername, "temp")  
    End If 
Next 
1

你在正確的軌道上,是的,有Chr(160)。如果你沒有目錄的話,那麼使用直接轉發的方法,其他方式搜索給所有子目錄的目錄檢查他們的名字,如果你得到一個命中,然後重命名它。

My.Computer.FileSystem.RenameDirectory("d:\x\" & Chr(160) & "\", "NewNameGoHere") 
Or 
     Dim path as string = "d:\x\" 
     Dim di As New IO.DirectoryInfo(path) 
     Dim Drs() As IO.DirectoryInfo = di.GetDirectories() 
     For Each dr As IO.DirectoryInfo In Drs 
      if dr.name = chr(160) then 
      My.Computer.FileSystem.RenameDirectory(path & dr.name & "\", "NewNameGoHere") 
      end if 
     Next