Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript &引用;GetDetailsSof";方法返回属性名,而不是值_Vbscript - Fatal编程技术网

Vbscript &引用;GetDetailsSof";方法返回属性名,而不是值

Vbscript &引用;GetDetailsSof";方法返回属性名,而不是值,vbscript,Vbscript,我试图找到目录中每个文件的“作者”和“上次修改人”详细信息,我使用VBScript循环,因为我认为这比使用VBA更快。我遇到的问题是,我的代码只返回“Owner”和“Author”,而不是实际值。在VBA中获取这些值没有问题,但速度非常慢 到目前为止,我有以下代码: Set objDlg = WScript.CreateObject("Shell.Application") '''startFolder = objStartFolder.ParentFolder.ParseName(objSta

我试图找到目录中每个文件的“作者”和“上次修改人”详细信息,我使用VBScript循环,因为我认为这比使用VBA更快。我遇到的问题是,我的代码只返回“Owner”和“Author”,而不是实际值。在VBA中获取这些值没有问题,但速度非常慢

到目前为止,我有以下代码:

Set objDlg = WScript.CreateObject("Shell.Application")
'''startFolder = objStartFolder.ParentFolder.ParseName(objStartFolder.Title).Path
startFolder = oShell.NameSpace("C:\Users\x4ujoh\Desktop\")

'Run the function 
ReportFiles startFolder

Function ReportFiles(folderName)
    Dim objFolder, objFile, fileCollection, folderCollection, subFolder

    Set objFolder = objFSO.GetFolder(folderName)
    Set fileCollection = objFolder.Files

    For Each objFile In fileCollection
        strFilePath = Chr(34) & objFile.Path & Chr(34) 
        strFileName = Chr(34) & objFile.Name & Chr(34)
        strFileSize = objFile.Size / 1024
        strFileType = Chr(34) & objFile.Type & Chr(34)
        strFileDateCreated = objFile.DateCreated
        strFileDateLastAccessed = objFile.DateLastAccessed
        strFileDateLastModified = objFile.DateLastModified

        strFilePathRep = Replace(objFile.Path, objFile.Name, "")

        strFileAuthor = Chr(34) & objDlg.NameSpace(strFilePathRep).GetDetailsOf(objFile.Name, 10) & Chr(34)
        strFileLastModifiedBy = Chr(34) & objDlg.NameSpace(strFilePathRep).GetDetailsOf(objFile.Name, 20) & Chr(34)

        objReportFile.Write(strFilePath & "," & strFileName & "," & strFileSize & "," & strFileType & "," & strFileDateCreated & "," & strFileDateLastAccessed & "," & strFileDateLastModified & "," & strFileAuthor & "," & strFileLastModifiedBy & Chr(13) & Chr(10))
    Next

    'Loop for each sub folder 
    Set folderCollection = objFolder.SubFolders

    For Each subFolder In folderCollection
       ReportFiles subFolder.Path
    Next
End Function

您必须使用
GetDetailsOf(objFile,…)
而不是
GetDetailsOf(objFile.Name,…)

目前VBScript中的哪个代码号代表“最后一位作者”?10似乎是“所有者”,20是“作者”(最初),但从1到300的循环似乎没有显示任何类似于“最后一个作者”的内容,没有称为“最后一个作者”的属性。不确定在哪里设置……也只是为了确认,您需要VBScript;你不是通过Excel等来做这件事的吗?我将改进我的答案(因为回过头来看,我可以看到一些效率低下的地方,另外我自己需要一个改进的版本),但它至少部分基于Excel。re:
上一个作者
。。。您对MS Office文档感兴趣的文件是什么?该字段是否实际被称为上次被修改的
?根据您的回答,可能有两种方法中的一种可以检索该信息。到目前为止,我所看到的是访问该项目的一种方法是使用“Last Saved By”=[Object]。内置文档属性(“Last Author”),但我只看到过有关MS Office对象/使用VBA的方法。我需要确认此审计信息是MS Office独有的。如果是这种情况,那么我将把属性收集限制在这些MS特定的对象上。