Перечислить файлы с учетом регистра в VBScript?

Я использую следующий фрагмент кода VBScript для перечисления всех файлов в моей папке c:\Scripts\:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService. _
   ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")

For Each objFile in colFiles
    Wscript.Echo objFile.Name 
Next

К сожалению, objFile.Name возвращает путь в нижнем регистре. Мне важно восстановить регистр всех имен файлов, т. е. NewFileOne.txt не должен возвращаться как newfileone.txt.

Есть ли способ перечислить файлы с учетом регистра в VBScript?


person AndreiM    schedule 05.06.2009    source источник


Ответы (3)


Если вы используете FileSystemObject, вы получите обратно имена с сохраненным регистром

Коллекция файлов (MSDN)

dim objFSO, path, fldr, f, msg
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set fldr = objFSO.GetFolder("C:\Scripts")

For Each f in fldr.Files
    MsgBox f.name
Next
person Mike Forman    schedule 05.06.2009

В отличие от свойства CIM_DataFile.Name, свойства FileName и Extension чувствительны к регистру. Итак, если вам необходимо использовать WMI, вы можете получить имя файла и расширение отдельно:

WScript.Echo objFile.FileName & "." & objFile.Extension
person Helen    schedule 08.06.2009

Решение Майка лучше, но вот ОЧЕНЬ УЖАСНАЯ альтернатива:

Используя shell exec, выполните следующую команду:

dir c:\scripts /B>file.txt 

Теперь «file.txt» содержит файл, указанный в правильном регистре.

Извините, это некрасиво, но работает.

person tekBlues    schedule 05.06.2009