2015-03-03 29 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