Я использую следующий фрагмент кода 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, вы можете получить имя и расширение файла отдельно:
CIM_DataFile.Name
FileName
Extension
WScript.Echo objFile.FileName & "." & objFile.Extension
Решение Майка лучше, но вот ОЧЕНЬ УЖАСНАЯ альтернатива:
С помощью оболочки exec выполните следующую команду:
dir c:\scripts /B>file.txt
Теперь "file.txt" содержит файл, указанный в правильном регистре.
Извините, это некрасиво, но работает.