Domanda

Sto usando il seguente codice VBScript frammento di enumerare tutti i file nel mio c: \ Scripts \ cartella:

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

Purtroppo objFile.Name restituisce il percorso in tutto minuscolo. E 'importante per me per recuperare il caso di tutti i nomi di file, vale a dire NewFileOne.txt, non dovrebbe essere restituito come newfileone.txt.

C'è un modo per enumerare i file con maiuscole e minuscole in VBScript?

È stato utile?

Soluzione

Se si utilizza il FileSystemObject, riavrete i nomi con il caso conservato

File Collection (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

Altri suggerimenti

A differenza della proprietà CIM_DataFile.Name, le proprietà FileName e Extension sono case sensitive. Quindi, se è necessario per l'utilizzo di WMI, è possibile recuperare il nome del file e l'estensione a parte:

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

La soluzione di Mike è meglio, ma qui è un'alternativa molto brutto:

Uso della shell exec eseguire il seguente comando:

dir c:\scripts /B>file.txt 

Ora "file.txt" contiene il file elencato con una corretta custodia.

Ci dispiace, è brutto, ma funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top