更新了在VB.NET中与FolderItem.GetDetailsOf一起使用Shell的等效代码
我希望有人能给我指出正确的方向。我花了几个小时试图让代码正常工作,但没有成功 我在Visual Studio中使用VB.NET编写了一个程序,该程序将打开一个目录,遍历所有文件,并将每个文件重命名/复制到一个新文件夹。我现在试图让程序读取每个文件的特定属性,并将其包含在文件名中。这将是“介质创建”或“创建日期”属性。似乎我可以使用Folder.GetDetailsOf方法来完成这项工作 Microsoft为VB提供的示例代码如下所示:更新了在VB.NET中与FolderItem.GetDetailsOf一起使用Shell的等效代码,vb.net,Vb.net,我希望有人能给我指出正确的方向。我花了几个小时试图让代码正常工作,但没有成功 我在Visual Studio中使用VB.NET编写了一个程序,该程序将打开一个目录,遍历所有文件,并将每个文件重命名/复制到一个新文件夹。我现在试图让程序读取每个文件的特定属性,并将其包含在文件名中。这将是“介质创建”或“创建日期”属性。似乎我可以使用Folder.GetDetailsOf方法来完成这项工作 Microsoft为VB提供的示例代码如下所示: Private Sub btnGetDetailsOf_Cl
Private Sub btnGetDetailsOf_Click()
Dim objShell As Shell
Dim objFolder As Folder
Set objShell = New Shell
Set objFolder = objShell.NameSpace("C:\WINDOWS")
If (Not objFolder Is Nothing) Then
Dim objFolderItem As FolderItem
Set objFolderItem = objFolder.ParseName("clock.avi")
If (Not objFolderItem Is Nothing) Then
Dim szItem As String
szItem = objFolder.GetDetailsOf(objFolderItem, 2)
End If
Set objFolderItem = Nothing
End If
Set objFolder = Nothing
Set objShell = Nothing
End Sub
然而,在尝试编译时,我会遇到很多错误,包括没有定义Shell、Folder和FolderItem
经过大量的搜索和阅读文章,我的代码已经达到了这一点,但在尝试设置objFolderItem时,它抛出了一个错误
Dim di As New DirectoryInfo(c:\folder)
Dim fileArray As FileInfo() = di.GetFiles()
Dim file As FileInfo
Dim objShell As Object
Dim objFolder As Object
Dim objFolderItem As Object
objShell = CreateObject("Shell.Application")
objFolder = objShell.NameSpace(c:\folder) 'create folder object
For Each file In fileArray
objFolderItem = objFolder.ParseName(file.Name) 'create file object
MsgBox(objFolder.getdetailsof(objFolderItem, 201))
Next file
当我检查正在运行的代码时,objShell.NameSpace似乎没有返回任何内容
有人可以建议我如何在VB.NET中创建objShell,或者提供Microsoft示例代码的更新版本,以便我可以使用它作为基础吗
谢谢这是一个简单问题的大量代码。你不需要使用外壳。要复制/移动:
My.Computer.FileSystem.CopyDirectory(<SourceDir>, <DestinationDir>)
要获取文件的属性,请执行以下操作:
attributes = File.GetAttributes(path)
谢谢你的帮助。通过导入Microsoft Shell控件和自动化并使用以下代码,我成功地实现了这一点:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objShell As Object
Dim objFolder As Object
objShell = New Shell32.Shell
objFolder = objShell.NameSpace("D:\FOLDERNAME")
If (Not objFolder Is Nothing) Then
Dim objFolderItem As Object
objFolderItem = objFolder.ParseName("FILENAME")
MsgBox(objFolderItem.name & " " & objFolder.getdetailsof(objFolderItem, 208))
objFolderItem = Nothing
End If
objFolder = Nothing
objShell = Nothing
End Sub
再次感谢您的帮助请添加指向您所指文章的链接。添加project COM对“Microsoft Shell控件和自动化”的引用。然后请参见:。OP不在文件系统中的属性之后,它们需要文件中的元数据。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objShell As Object
Dim objFolder As Object
objShell = New Shell32.Shell
objFolder = objShell.NameSpace("D:\FOLDERNAME")
If (Not objFolder Is Nothing) Then
Dim objFolderItem As Object
objFolderItem = objFolder.ParseName("FILENAME")
MsgBox(objFolderItem.name & " " & objFolder.getdetailsof(objFolderItem, 208))
objFolderItem = Nothing
End If
objFolder = Nothing
objShell = Nothing
End Sub