arquivos Enumerar com sensibilidade caso no VBScript?
-
12-09-2019 - |
Pergunta
Eu estou usando o seguinte trecho de código VBScript para enumerar todos os arquivos em meu 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
Infelizmente objFile.Name retorna o caminho em tudo em minúsculas. É importante para mim para recuperar o caso de todos os nomes de arquivos, ou seja NewFileOne.txt, não deve ser retornado como newfileone.txt.
Existe uma maneira de arquivos Enumerar com maiúsculas e minúsculas no VBScript?
Solução
Se você usar o FileSystemObject, você vai voltar nomes com o caso preservado
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
Outras dicas
Ao contrário da propriedade CIM_DataFile.Name
, as propriedades FileName
e Extension
são maiúsculas de minúsculas. Então, se é necessário para você usar o WMI, você pode recuperar o nome do arquivo e extensão separadamente:
WScript.Echo objFile.FileName & "." & objFile.Extension
A solução de Mike é melhor, mas aqui é uma alternativa muito feio:
Usando o shell Exec execute o seguinte comando:
dir c:\scripts /B>file.txt
Agora "file.txt" contém o arquivo listado com revestimento adequado.
Desculpe, é feio, mas funciona.