получить свойства документа с помощью VBS

У меня есть папка, содержащая несколько файлов. Я хотел бы получить для каждого файла список всех свойств, назначенных этому файлу, и их значения.

Я написал эти несколько строк, но не могу определить правильные методы для использования в заполнителях MethodIamLookingFor1 (для получения списка назначенных свойств), MethodIamLookingFor2 (для получения имени свойства) и MethodIamLookingFor3 (для получения значения свойства):

Dim sFolder
sFolder = "C:\Batch_DEV\to"
Dim objFSO, objDir, listObjFiles, objFile

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDir = objFSO.GetFolder(sFolder)
Set listObjFiles = objDir.Files

For Each objFile In listObjFiles
        Wscript.Echo objFile.name & ": "
        listProperties = objFile.MethodIamLookingFor1 
            For Each objFileProperty In listProperties
                Wscript.Echo "property name is: " & objFileProperty.MethodIamLookingFor2
                Wscript.Echo "property value is: " & objFileProperty.MethodIamLookingFor3
            Next
    Next

Не могли бы вы помочь? Спасибо!


person Massyle Djama    schedule 29.12.2015    source источник
comment
Посмотрите на этот пост: stackoverflow. com/questions/5651890/   -  person Sorceri    schedule 29.12.2015
comment
@Sorceri Вы знаете разницу между VBA и VBScript, верно?   -  person user692942    schedule 29.12.2015
comment
@Lankymart Вы понимаете, что его можно легко преобразовать для работы в VBScript ... верно? .....   -  person Sorceri    schedule 30.12.2015
comment
@Sorceri Нет, правда, вы могли бы подумать, что я знаю это, имея более 70+ ответов на VBScript. Боже. Дело в том, зачем направлять кого-то к вопросу об Excel VBA, который может не знать разницы и пытаться использовать код напрямую?   -  person user692942    schedule 30.12.2015


Ответы (3)


Код из Использование VBA для получения расширенных атрибутов файла

игнорируйте ключевое слово VBA, так как его можно без особых усилий преобразовать в VBScript. Смотри ниже.

Dim fso
Dim txtStream
Dim sFile
Dim oShell

Set oShell = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oDir
Set oDir = oShell.Namespace(pathToFolder)
Set txtStream = fso.OpenTextFile(pathToTextFile, 2, True, -2)

For Each sFile In oDir.Items
    For i = 0 To 40
       txtStream.WriteLine i & " : " & oDir.GetDetailsOf(oDir.Items, i) & " : " & oDir.GetDetailsOf(sFile, i)
    Next
Next
person Sorceri    schedule 29.12.2015
comment
Оцените усилия, чтобы объяснить ссылку. - person user692942; 30.12.2015

Я не припоминаю, чтобы VBScript имел свойство, которое можно было бы использовать для перечисления свойств файла. VB6 содержал объект FileInfo, который позволил бы это сделать.

Используя VBScript, вам нужно указать каждое свойство, которое вы хотите. Свойства файлов перечислены в MSDN.

person Matthew L Shields    schedule 29.12.2015

спасибо, я использовал указанную вами инструкцию GetDetailsOf и адаптировал свой код для использования https://technet.microsoft.com/en-us/library/ee176615.aspx входные данные

Dim sFolder
sFolder = "C:\Batch_DEV\to"

Set objShell = CreateObject("Shell.Application")
Set objDir = objShell.Namespace(sFolder)

For Each strFileName in objDir.Items
    Wscript.Echo objDir.GetDetailsOf(strFileName, 0) & ":"
    For i = 0 To 10
        Wscript.Echo  vbtab & "property name is: " & objDir.GetDetailsOf(objDir.Items, i)
        Wscript.Echo  vbtab & "property value is: " & objDir.GetDetailsOf(strFileName, i)
    Next
Next

поэтому в конце методы:

  • MethodIamLookingFor1 ==> GetDetailsOf(objDir.Items, i)
  • MethodIamLookingFor2 ==> GetDetailsOf(objDir.Items, i)
  • MethodIamLookingFor3 ==> GetDetailsOf(strFileName, i)

Я добавил vbtab для улучшения вывода, и вот результат:

test.txt:
         property name is: Nome
         property value is: test.txt
         property name is: Dimensione
         property value is: 351 byte
         property name is: Tipo elemento
         property value is: File TXT
         property name is: Ultima modifica
         property value is: 23/12/2015 14:34
         property name is: Data creazione
         property value is: 29/12/2015 09:30
         property name is: Data ultimo accesso
         property value is: 29/12/2015 09:30 word 
sample.docx:
         property name is: Nome
         property value is: word sample.docx
         property name is: Dimensione
         property value is: 11,1 KB
         property name is: Tipo elemento
         property value is: Documento di Microsoft Word
         property name is: Ultima modifica
         property value is: 10/12/2015 16:24
         property name is: Data creazione
         property value is: 29/12/2015 09:31
         property name is: Data ultimo accesso
         property value is: 29/12/2015 09:31

Большое спасибо за поддержку!

person Massyle Djama    schedule 30.12.2015
comment
Замедление массива в строке Dim listProperties(10) ничего не делает в вашем скрипте. И для следующего цикла нет никакой пользы в результате сценария. удалите эти 4 строки. - person hollopost; 03.10.2018