vbs파일을 생성해 스케줄작업을 하는 경우가 꽤 된다.
vbs에서는 기본적으로 외부파일에 대해서 include 방식이 제공되지 않아서 상당히 불편하다.
이때, 공통으로 쓸 변수, 함수 들을 따로 파일로 만들어 놓고 쓸수 있는 방법일 찾다 아래 함수를 찾게 되었다.

'--vbs에서 외부 vbs파일을 inclue 하기 위해서 사용한다.
Sub Include(sInstFile)
On Error Resume Next

Dim oFSO, f, s

Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(sInstFile) Then
Set f = oFSO.OpenTextFile(sInstFile)
s = f.ReadAll
f.Close
ExecuteGlobal s
End If

Set oFSO = Nothing
Set f = Nothing
End Sub

위 함수를 기본 vbs파일에 넣어주고 include할 파일을 위 함수를 이용해 호출하여 사용하면된다.


예제.
 A.vbs에서 b.vbs파일 include하기 위해서는
A.vbs에서
Call Include("b.vbs")
해주면 된다..
이때..a.vbs와  b.vbs가 같은 디렉토리에 있을경우에는 파일명만 써도 되지만, 서로 다른 디렉토리에 있다면, include시에 b.vbs의 전체 경로를 써주면된다.

출처 : http://dev.blog.serve.co.kr/

'Dev > wsh' 카테고리의 다른 글

exe, vbs 파일등을 실행 시키는 WMI 메소드  (0) 2011.05.24

안녕하세요... 멍멍이입니다.

원격지에 있는 컴퓨터의 exe, vbs 파일등을 실행 시키는 WMI 메소드가 있어
소개해 드릴까 합니다... soap 같이 원격지에서도 아주 잘 되는군요... 서버의
파일을 실행시키는 상용컴포넌트도 있던데... 장사가 안될것 같네요. ^^;;


서버에서 프로그램을 실행해야 하는 경우 유용하게 쓰일것 같네요...
로컬 (IIS와 같은 컴퓨터)에서는 예전에 Han님이 소개해 주신 HanWSC.Object 를
사용해야 합니다. 아래링크를 참조하시길...


1.exec.asp 파일을 만든다.
2. c:\ 에 makefolder.vbs 폴더를 만든다.


윈도우 작업관리자로 확인하면 프로그램 실행여부를 알수 있습니다.


--------1. exec.asp -------------


<%
 Dim ProcID


 bClose = Request("bClose")
 uip = Request("uip")
 uid = Request("uid")
 upw = Request("upw")
 cmd = Request("cmd")


 if Len(cmd) > 0 then
  call ExecProgram()
 end if


 if bClose = "1" then
  call TerminateProgram(ProcID)
 end if


function GetLoc()
 NSpace = "root\CIMV2"


 Set oLoc = CreateObject("WbemScripting.SWbemLocator")
 Set wn = CreateObject("WScript.NetWork")
  sn = wn.ComputerName
 Set wn = Nothing
 if (uip="") or (uid="") or (upw="") then
  Set oh = CreateObject("HanWSC.Object")
  Set oSvc = oh.GetHObject("winmgmts:\\" & sn & "\" & NSpace)
  Set oh = Nothing
 else
  Set oSvc = oLoc.ConnectServer(uip,NSpace,uid,upw)
 end if
 Set GetLoc = oSvc
end function


sub ExecProgram()
  Set obj = GetLoc()
  Set oProc = obj.Get("Win32_Process")
  rs = oProc.Create(cmd,null,ot,ProcID)
  Set oProc = Nothing
  Set obj = Nothing
end sub


sub TerminateProgram(p_id)
 Set obj = GetLoc()


 Set p = obj.ExecQuery("Select * from " _
 & " Win32_Process where ProcessId='" & p_id & "'")


 if (p.count) > 0 then
  for each t1 in p
   iv = t1.Terminate(0)
  next
 end if
 Set p = Nothing
 Set obj = Nothing
end sub


if Len(ProcID) > 0 then Response.write ProcID & "<br>"


%>


<html>


<head>
<script language="javascript">
function chgSel(){
 var frm = document.form1;
 var sel = document.form1.selCmd;
 var idx = sel.selectedIndex;
 frm.cmd.value = sel.options[idx].value;

 

}


</script>
</head>

<body>


<form name="form1" method="post">


<input type="checkbox" value="1" name="bClose">실행후 프로그램 종료
<br><br>
<select name="selCmd" onchange="chgSel();">
<option value="">명령 선택</option>
<option value="calc.exe">calc.exe</option>
<option value="wscript c:\makefolder.vbs">makefolder.vbs</option>
<option value="notepad.exe">notepad.exe</option>
</select>


명령줄 : <input type="test" name="cmd" size="50">
<br><br>
<hr>
<br><br>
다른 컴퓨터에는 아래의 값을 모두 입력 <br><br>
IP Addr : <input type="text" name="uip"><br>
User ID :<input type="text" name="uid" value="Administrator"><br>
User PW : <input type="text" name="upw"><br>


<br><br>
<input type="submit" value="실행">


</form>


</body>


</html>


-------- 2.makefolder.vbs ----------------


Set fso = CreateObject("Scripting.FileSystemObject")


 Set f = fso.CreateFolder("c:\aspnewsgroup")
 Set f = Nothing


Set fso = Nothing

출처 : http://blog.paran.com

'Dev > wsh' 카테고리의 다른 글

vbs 파일 작업시 외부 vbs파일 include 하는 방법  (0) 2011.05.24

+ Recent posts