2013-07-10 6 views
0

하루가 끝날 때 모든 주문 파일을 하나의 파일로 복사하려고합니다. 내 코드는 다음과 같습니다. 오류를 수정하십시오. 오류가 있습니다. cFol C:\Customers\ABF\Orders과 같은 디렉토리의 전체 이름을 입력하면 오류가 발생하지 않습니다. 하지만 내가 줄 때 cFol 나는 0x80041002 오류가 나타납니다.누군가가 vbscript 오류를 바로 잡을 수 있습니까?

showfolderlist "c:\Customers" 

Sub ShowFolderList(folderspec) 
    Dim fs, f, f1, fc, s 
    s = "" 
    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set f = fs.GetFolder(folderspec) 
    Set fc = f.SubFolders 
    For Each f1 in fc 
    s = f1.name 
    Msgbox s 
    Const ForReading = 1 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objOutputFile = objFSO.CreateTextFile("C:\New\output.txt") 
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
    cFol = "C:\Customers\" & s & "\Orders" 
    msgbox cFol 
    Set FileList = objWMIService.ExecQuery _ 
     ("ASSOCIATORS OF {Win32_Directory.Name='cFol'} Where " _ 
     & "ResultClass = CIM_DataFile") 
    For Each objFile In FileList 
     Set objTextFile = objFSO.OpenTextFile(objFile.Name, ForReading) 
     strText = objTextFile.ReadAll 
     objTextFile.Close 
     objOutputFile.WriteLine strText 
    Next 
    objOutputFile.Close 
    s="" 
    Next 
End Sub 

오류가이 라인에서 발생하므로 WMI 쿼리는 존재하지 않는 이름 cFol 가진 디렉토리 문자열 내부 변수 이름을 확장하지 않습니다

Set FileList = objWMIService.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name='cFol'} Where " _ 
    & "ResultClass = CIM_DataFile") 
+1

* 어느 오류가 있습니까? 코드의 어느 라인에서? –

+0

{Win32_Directory.Name = 'cFol'} –

+0

오류는 0x80041002입니다. –

답변

2

VBScript를 찾고 . 또한 경로에서 백 슬래시를 이스케이프 처리해야 할 수도 있습니다.

Set FileList = objWMIService.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name=""" & Replace(cFol, "\", "\\") _ 
    & """} Where ResultClass = CIM_DataFile") 

및 오류가 사라이와

Set FileList = objWMIService.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name='cFol'} Where " _ 
    & "ResultClass = CIM_DataFile") 

을이를 교체합니다.

안전 예방 조치로 작은 따옴표를 큰 따옴표로 교체했습니다. 작은 따옴표는 WMI에서 유효한 문자열 구분 기호이지만 파일 및 폴더 이름에 유효한 문자이기 때문에 작은 따옴표가 포함 된 경로가있을 때 문제가 발생할 수 있습니다. 큰 따옴표를 사용하면 파일 및 폴더 이름에 유효한 문자가 아니기 때문에이 문제를 피할 수 있습니다.

+0

감사합니다. 매력과 같은 !!! –

+1

반갑습니다. 그러나, "감사합니다"코멘트를 게시하지 마십시오. SO를 통해 감사를 표시하는 적절한 방법은 대답을 upvote 및/또는 [수락] (http://meta.stackexchange.com/a/5235)입니다. –

관련 문제