Windows Script Host(WSH) 기초
1988년 처음으로 세운상가에서 IBM 호환 XT 기종 컴퓨터를 구입한 후 신기해 하면서
닥터 할로, 보석글, 각종 게임 등을 하면서 너무나도 신기해 했던 기억이 지금도 생생
하다. 그 당시만 해도 지금처럼 멋있는 아이콘을 더블클릭만 하면 프로그램이 실행되
던 윈도우 환경이 아니라 어떤 명령을 실행하려면 도스 프롬프트 상에서 타이핑을 해
야만 하던 시절이었다. 이런 환경에서 작업을 하다 보면 반복되는 단순한 작업을 자동
화할 방법들에 대해 대부분의 사람들이 고민하게 된다. 이런 고민 끝에 배치 작업에
대한 공부를 하게 되고, 확장자가 “.bat”인 파일을 만들어 일련의 처리를 할 수 있
도록 각종 명령어들을 나열 시킨 후 배치 파일을 돌렸을 때 원하는 결과를 얻고 나서
스스로에 대해 얼마나 대견스러워 했었던가?
서론이 너무 길었다.
윈도우 환경에서도 일반 사용자들은 윈도우 스크립트에 대해 별 고민을 하지 않을 것
이다. 하지만 파워 유저로 성장하게 되면서는 누구나 다 업무를 자동화하기 위한 방법
들을 고민하게 된다. 지금 이 강좌는 바로 그런 고민을 하고 있는 사람들을 위한 것이
다. MS는 윈도우 환경에서도 업무를 자동화하기 위한 방법을 제공하기 위해 WSH
(Windows Script Host)를 제공하고 있다. WSH를 사용하면 Windows 95, 98, 2000 또는
Windows NT 운영 체제에서 자연스럽게 Visual Basic Scripting(“.vbs” 파일) 과
Jscript(“.js 파일”)와 같은 각종 스크립트들을 실행할 수 있게 된다. 이런 스크립
트 언어를 사용하면 공통 작업을 자동화하는 스크립트를 작성할 수 있게 되고 강력한
매크로와 로그온 스크립트를 작성할 수 있게 된다.
백문이 불연일견이다.
간단한 예제를 통하여 윈도우 스크립트의 매력에 대해 느껴보자.
이번 강좌에서 보여줄 예제는 너무나도 간단한 것이지만 WSH가 무엇인지 감을 잡기에
는 충분하다. 오늘 예제에서는 메모장을 자동으로 실행시키고 자동으로 타이핑을 한
후 메모장을 종료시키는 예제이다.
예제를 보기 전에 이 스크립트를 실행할 수 있으려면 먼저 WSH가 설치되어 있어야 한
다. 이를 간단히 확인하려면 탐색기에서 확장자가 .vbs인 파일을 찾아서 (없다면 아
무 파일이나 확장자를 .vbs로 바꿔 본다) 아래 그림과 같이 그 확장자와 연결된 프로
그램 아이콘이 보이는지 확인하고 종류 탭에 “VBScript 파일”이란 설명이 달려 있는
지 확인해보자. 아이콘도 보이고 VBScript 파일이란 성명도 탐색기에서 보이면 자신
의 컴퓨터에서 이런 스크립트를 실행시킬 준비가 되어 있는 것이다.
<그림>
만일, 아이콘도 안보이고 종류 탭에도 “VBScript 파일”이란 문구가 없다면 WSH를 설
치해야 한다. 설치가 필요한 사람은 다음 장을 참조하고 설치가 필요 없는 사람은 실
행방법 및 예제로 건너 뛰면 된다.
▶설치방법
마이크로소프트 홈페이지를 방문하여 자신의 운영체제에 맞는 Microsoft Windows
Script 5.5를 다운로드 받는다.
다운로드 : http://www.microsoft.com/msdownload/vbscript/scripting.asp?id=27
다운로드 받은 파일을 실행시키면 별다른 어려움 없이 설치가 될 것이다.
설치가 제대로 된 사람은 다음 장의 실행방법 및 예제를 살펴보도록 하자.
▶실행방법 및 예제
이번 장에서는 아주 간단한 스크립트를 작성할 것이다. 아래 스크립트를 그대로 복사
한 후 notepad.vbs란 이름으로 저장해 보자.
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 100
WshShell.SendKeys "Hi~"
WScript.Sleep 500
WshShell.SendKeys "{ENTER}"
WScript.Sleep 500
WshShell.SendKeys "I"m Daniel Joe of korea.internet.com."
WScript.Sleep 500
WshShell.SendKeys "~~"
WScript.Sleep 500
WshShell.SendKeys "How nice to study about Windows Script..."
WScript.Sleep 500
WshShell.SendKeys "~"
WScript.Sleep 500
WshShell.SendKeys "Thank you."
WScript.Sleep 500
WshShell.SendKeys "%{F4}" "alt+F4 : 종료버튼
WScript.Sleep 500
WshShell.SendKeys "y"
WScript.Sleep 500
WshShell.SendKeys "C:\test.txt"
WScript.Sleep 500
WshShell.SendKeys "{ENTER}"
set wshshell = nothing
위 스크립트는 메모장을 자동으로 실행시키고 몇 글자를 자동으로 타이핑한 후
test.txt란 파일명으로 저장하는 스크립트이다.
위 스크립트를 notepad.vbs로 저장했다면 이제 탐색기에서 그 파일을 더블클릭하여 실
행시켜 보자. 신기하게도(WSH를 처음 접하는 사람은 분명 신기할 것이다^^) 메모장이
자동으로 실행된 후 글자가 혼자서 타이핑 되더니 파일이 저장되고 종료되는 것을 확
인했을 것이다.
이번엔 C:\ 에 가서 test.txt가 있는지 확인하고 그 파일을 열어보자. 아래와 같은 결
과가 나왔을 것이다.
<그림>
자, 이제 작성된 스크립트에 대해 살펴보도록 하자.
▶예제 스크립트 분석
개체 생성
첫줄을 보면 set WshShell = WScript.CreateObject("WScript.Shell")라고 되어 있다.
WSH에는 많은 개체들이 있다. 이 개념을 잘 알려면 객체지향과 ActiveX 개체에 대한
이해가 필요하다. 여기서 이 개념을 자세히 설명하는 것은 부적절하므로 WSH 개체는
WSH에서 제공하는 기능들이 모여 있는 하나의 기능 단위 정도로만 이해하고 넘어가
자. 제일 처음 등장한 WSH의 개체는 WScript이다. WScript 개체에 대한 더 자세한 설
명은 다음 기회로 미루고 이 개체를 통해 WSH의 다른 개체들을 만들 수 있다는 정도
만 알고 넘어가자. 우리는 이 스크립트에서 “메모장”을 실행시키기로 했다. 그러므
로 WSH에서 프로그램 실행과 관련 있는 또 다른 개체인 WshShell을 만들기 위해
WScript.CreateObject(“WScript.Shell”)이란 명령을 이용하여 WshShell 개체를 만들
어 냈다. 이 개체를 이용하면 각종 쉘 명령을 실행시킬 수 있게 된다.
메모장 실행
WshShell.Run "notepad"
WshShell 개체가 생겨났으므로 WshShell 개체가 가지고 있는 메소드 중 Run을 이용하
여 메모장의 실행파일인 notepad를 호출할 수 있다.
자동 타이핑
WScript.Sleep 100
WshShell.SendKeys "Hi~"
...
WScript에는 Sleep이란 메소드가 있다. WScript.Sleep 100이라고 하면 실행 시간을
100ms(0,1초)만큼 딜레이 시키는 기능이다. 너무 빨리 지나가는 것을 막기 위해 시간
딜레이 값을 준 것이다.
WshShell 개체에는 SendKeys란 메소드가 있어서 사람이 타이핑을 하는 것과 같은 효과
를 낼 수 있도록 도와준다. 이 때 주의할 것은 엔터키와 같은 특수 키 처리이다. 여기
서 사용된 특수키는 엔터키와 Alt+F4(프로그램 종료 단축키) 정도이다. 엔터키는
{ENTER} 또는 ~로 처리가 가능하고 Alt+F4는 %{F4}로 처리한다.
특수키 처리에 대한 더 자세한 내용은 이곳을 참조하기 바란다.
개체 소멸
set wshshell = nothing
WshShell 개체를 다 사용했으면 운영체제에 명시적으로 알려줄 필요가 있다. 바로
Set WshShell = nothing이 그 역할을 하는 것이다.
오늘 이 강좌에서는 WSH의 아주 기초적인 내용을 다루었다. 마이크로소프트의 WSH 관
련 홈페이지를 가면 자세한 내용을 살펴볼 수 있을 것이다.
사실, WSH에 대한 공부는 끝이 없다. 마음만 먹으면 WSH를 몰랐을 때는 꿈도 못꿨을
환상적인(?) 일들을 만들어낼 수 있다. WSH로 할 수 있는 일들이 워낙 다양하고 광범
위하므로 모든 것을 다 다루기는 어렵겠지만 개념을 잡고 스스로 공부할 수 있을 정도
의 강좌 및 예제들을 지속적으로 살펴보도록 하겠다.
===============================================================================
코리아인터넷닷컴(http://korea.internet.com)에서는 앞으로도 WSH와 관련된 강좌를
지속적으로 진행한다는군요. 관심있으신 분들은 한번씩 들러보세요.