문제

다음 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)의 사례를 검색하는 것이 중요합니다.

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를 사용해야하는 경우 파일 이름과 확장자를 개별적으로 검색 할 수 있습니다.

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

Mike의 솔루션은 더 좋지만 여기에 매우 추악한 대안이 있습니다.

쉘 exec 사용 다음 명령을 실행합니다.

dir c:\scripts /B>file.txt 

이제 "file.txt"에는 적절한 케이싱이 표시된 파일이 포함되어 있습니다.

죄송합니다. 못 생겼지 만 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top