Перечислять файлы с учетом регистра в VBScript?
-
12-09-2019 - |
Вопрос
Я использую следующий фрагмент кода 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, вы получите имена с сохраненным регистром.
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» содержит файл, указанный в правильном регистре.
Извините, это некрасиво, но работает.