更新了在VB.NET中与FolderItem.GetDetailsOf一起使用Shell的等效代码

更新了在VB.NET中与FolderItem.GetDetailsOf一起使用Shell的等效代码,vb.net,Vb.net,我希望有人能给我指出正确的方向。我花了几个小时试图让代码正常工作,但没有成功 我在Visual Studio中使用VB.NET编写了一个程序,该程序将打开一个目录,遍历所有文件,并将每个文件重命名/复制到一个新文件夹。我现在试图让程序读取每个文件的特定属性,并将其包含在文件名中。这将是“介质创建”或“创建日期”属性。似乎我可以使用Folder.GetDetailsOf方法来完成这项工作 Microsoft为VB提供的示例代码如下所示: Private Sub btnGetDetailsOf_Cl

我希望有人能给我指出正确的方向。我花了几个小时试图让代码正常工作,但没有成功

我在Visual Studio中使用VB.NET编写了一个程序,该程序将打开一个目录,遍历所有文件,并将每个文件重命名/复制到一个新文件夹。我现在试图让程序读取每个文件的特定属性,并将其包含在文件名中。这将是“介质创建”或“创建日期”属性。似乎我可以使用Folder.GetDetailsOf方法来完成这项工作

Microsoft为VB提供的示例代码如下所示:

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