2011-08-04 4 views
3

다음 코드를 실행하면 작동하지만 코드 완성을 기다려야합니다. 내 프로그램의 나머지 부분을 실행할 수 있기 전에. 어떻게해야합니까?vbscript "oShell.run"명령에 대한 도움이 필요합니다.

Set oShell = CreateObject("Wscript.Shell") 
oShell.Run "sftp2.exe -B " & strOutputFile 

가 작동하지 않습니다 :

작품,하지만 기다리지 않는다

Set oShell = CreateObject("Wscript.Shell") 
Return = oShell.Run ("sftp2.exe -B " & strOutputFile, 1, true) 

작품,하지만 기다리지 않는다 :

Set oShell = CreateObject("Wscript.Shell") 
Set oExec = oShell.Exec ("sftp2.exe -B " & strOutputFile)  
+0

작동하지 않는다고 말하면 어떤 종류의 오류 메시지가 표시됩니까? sftp2.exe가 실행 중이 아니거나 즉각적인 오류를 반환하고있는 것처럼 들리거나 종료 할 때 반환 코드가 발행되지 않는 것처럼 들립니다. 실제로 프로세스를 볼 수있을 때 대신 WMI로이 작업을 시도 할 수 있습니다. – Nilpo

답변

1

을 세 번째 예에서 프로세스가 완료 될 때까지 WshScriptExec 객체의 상태를 폴링 할 수 있습니다.

비록 귀하의 사례가 msdn에서 가져온 것처럼 보이지만 왜 작동하지 않는지 잘 모르겠습니다. 아마도 귀하의 프로그램 sftp2.exe이 문제를 일으키는 방식일까요? 일반적인 ftp 응용 프로그램과 같은 것이라면 호환되지 않는 종류의 명령 프롬프트로 실행됩니다. 나는 단지 추측하고있다.

+0

응답 해 주셔서 감사합니다. 나는 수면 루프에 대해 생각하고 있었지만 "Set oExec = oShell.Exec ("sftp2.exe -B "& strOutputFile)"명령을 실행하면 sftp가 제대로 완료되지 않은 것처럼 보입니다. "oShell.Run ("sftp2.exe -B "& strOutputFile, 1, true)"파일에 대한 올바른 디렉터리에 없기 때문에 "실패했습니다. 다른 제안? – Tony

+1

전체 파일 경로를 사용해 보셨습니까? – Nilpo

1

다시 도움 주셔서 감사합니다. 왜 제대로 작동하지 않는지 알게되었습니다. 절대 경로 대 상대 경로. 상대 경로를 사용하고 있었고 아래 코드가 실패하는 원인이되었습니다. 파일을 sftp로 찾지 못했기 때문입니다. 위의 다른 두 예제에서 필자의 절대 경로는 필요하지 않습니다.

이것은 절대 경로와 함께 작동합니다 (예 : "strOutputFile" 파일에 "C:\somefolder\file"; 명령을 입력하십시오).

Set oShell = CreateObject("Wscript.Shell") 

Return = oShell.Run ("sftp2.exe -B " & strOutputFile, 1, true) 
관련 문제