프로그래밍

WSH(WIndows Script Hosting) 정리

채윤아빠 2009. 1. 15. 11:28
728x90
반응형
스크립트 실행기의 종류
CScript 명령줄 실행기 ( Echo하면 Command 창에 추가로 표시됨 )
WScript 윈도우 전용 실행기( Echo하면 대화상자로 표시함 )


명령줄 파라미터의 처리 방법

다음 예제는 스크립트를 실행시 넘겨준 파라미터를 표시하는 예입니다.
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
   WScript.Echo objArgs(I)
Next

위 예제를 test.vbs로 저장한 후에 해당 파일을 그냥 실행하면 WScript(윈도우 모드)로 실행되고, 명령줄에서 cscript test.vbs로 실행하면 명령 모드로 실행됩니다. 유닉스 계열의 쉘 스크립트처럼쓰려면 csript로 명령줄에서 사용하면 되겠죠.
윈도우즈에서 배치파일(bat)만으로는 기능이 부족하여 유닉스의 쉘 스크립터 언어가 그리웠는데, WSH는 윈도우즈에서 사용할 수 있는 막강한 쉘 스크립트라고 볼 수 있겠네요.

아래 참고 자료에 있는 Windows Script Host Objects들은 직접 CreateObject를 하지 않도고 바로 사용할 수 있고, 그 외에는 컴포넌트들은 CreateObject를 통해 생성하여 사용하면 됩니다.

버전별로 기능 차이가 있기 때문에 여러 환경에서 동일한 스크립트를 운용한다면 아래 WSH Version Information를 참고하셔서 스크립트를 작성하셔야 합니다.


해당 스크립트를 종료하는 방법

아래 코드와 같이 Quit를 호출합니다. Quit로 넘기는 값을 스크립트의 종료시 호출 프로세스에게 반환할 값으로 0인경우 성공적으로 종료됨을 나타냅니다.

If WScript.Arguments.Count = 0 Then
	WScript.Echo " 사용법 : cscript test.vbs  [] [DEL_EMPTY_DIR=0]"
	Wscript.Quit(0)
End If

Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
   WScript.Echo objArgs(I)
Next

외부 명령 실행하기

Shell 객체의 Run 메소드를 이용하면 외부 명령(프로그램)을 실행할 수 있습니다.
Dim objShell

Set objShell = WScript.CreateObject ("WSCript.shell")
objShell.Run "notepad.exe"

주의할 점은 윈도우즈가 멀티 태스킹 운영체제이므로, Run메소드로 실행한 프로그램이 종료될 때까지 기다리는 것이 아니라, 새로운 프로세스로 실행되는 것이기 때문에, 비동기 함수와 같이 Run 메소드를 호출하면 바로 결과가 반환됩니다.

참고자료
Windows Script Host Objects : http://msdn.microsoft.com/en-us/library/f51wc7hz(VS.85).aspx
WSH Version Information : http://msdn.microsoft.com/en-us/library/x66z77t4(VS.85).aspx
WScript : http://nazelm.egloos.com/938247
Windows Script Host Object Model : http://nazelm.egloos.com/916398