Вопрос

Я использую следующий фрагмент кода 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?

Это было полезно?

Решение

Если вы используете 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

Другие советы

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

WScript.Echo objFile.FileName & "." & objFile.Extension

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

С помощью оболочки exec выполните следующую команду:

dir c:\scripts /B>file.txt 

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top