2015-01-22 2 views
0

VBS 및 robocopy를 사용하여 공유를 로컬 컴퓨터로 미러링하려고합니다. 스크립트는 작동하지만 공유 폴더에 경로에 공백이있어 공백이있는 경로로 작업 할 수 없습니다.VBS : oShell.run 및 robocopy가 작동하지 않습니다.

InputFile = "\\baardrob\Software application\Scripts\Input\computers.Txt" 
Const OverWriteFiles = True 
Set oShell = WScript.CreateObject("WSCript.shell") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(InputFile) 
Set myLog = objFSO.OpenTextFile("\\baardrob\Software application\Scripts\Input\failed.txt", 2) 
Do Until objFile.AtEndOfStream 
    strComputer = objFile.ReadLine 
    On Error Resume Next 
    oShell.run "robocopy "\\baardrob\software application" c:\temps /mir" 
    If Err Then myLog.WriteLine strComputer 
    On Error Goto 0 
Loop 
myLog.Close 

MsgBox "Done" 

편집 : Ekkehard.Horner 솔루션은 그래도 난 또 다른 문제를 가지고 일했다. c : \ temps는 작동시키기위한 시도 일 뿐이며 실제로 "\"& strComputer "\ c $"에 쓰여야하지만 작동하지 않습니다.

나는 allready 시도 :

InputFile = "\\baardrob\Software application\Scripts\Input\computers.Txt" 
Const OverWriteFiles = True 
Set oShell = WScript.CreateObject("WSCript.shell") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(InputFile) 
Set myLog = objFSO.OpenTextFile("\\baardrob\Software application\Scripts\Input\failed.txt", 2) 
Do Until objFile.AtEndOfStream 
    strComputer = objFile.ReadLine 
    On Error Resume Next 
    oShell.run "robocopy ""\\baardrob\Software application"" ""\\"" & strComputer & ""\c$"" /mir" 
    If Err Then myLog.WriteLine strComputer 
    On Error Goto 0 
Loop 
myLog.Close 

MsgBox "Done" 
+0

"작동하지 않는다"는 부족 오류 설명이다. 'robocopy'가 로그 ('/ log : C : \ path \ to \ your.log')를 쓰고 어떤 에러가 발생하는지보십시오. 또한 관리 공유에 액세스하려면 관리자 권한이 필요합니다. –

답변

1

귀하의

"robocopy "\\baardrob\software application" c:\temps /mir" 

이 유효 VBScript를되지 않습니다 :

>> s = "robocopy "\\baardrob\software application" c:\temps /mir" 
>> 
Error Number:  1002 
Error Description: Syntax error 

수정 '내부'는 ""(참조, here를 사용하여 이스케이프 인용) :

증강 질문에

업데이트 WRT :

>> strComputer = "pipapo" 
>> s = "robocopy ""\\baardrob\Software application"" ""\\"" & strComputer & ""\c$"" /mir" 
>> WScript.Echo s 
>> 
robocopy "\\baardrob\Software application" "\\" & strComputer & "\c$" /mir 
>> s = "robocopy ""\\baardrob\Software application"" ""\\" & strComputer & "\c$"" /mir" 
>> WScript.Echo s 
>> 
robocopy "\\baardrob\Software application" "\\pipapo\c$" /mir 
+0

고마워, 아직 몇 가지 문제가 있지만 원래 질문을 편집했습니다. – sjors86

+0

@ sjors86 - 업데이트 –

+0

을 참조하십시오. 원격 컴퓨터가 온라인 상태가 아니라면 robocopy는 여전히 각 폴더를 복사하려고 시도합니다. 입력 파일 "computers.txt"에서 다음 컴퓨터로 이동하여 "failed.txt"로그에 기록합니다. – sjors86