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?

Foi útil?

Solução

Se você usar o FileSystemObject, você vai voltar nomes com o caso preservado

Arquivos Coleção (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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top