본문 바로가기
TechNical/WMI

HTA] 자주쓰는 배치를 파라메터도 주고 쉽게 실행을 해보자.

by 강멍멍이 2010. 6. 23.
반응형
예전에 만들어 놓았던 건데 그냥 함 올려 봅니다.

이게 무엇인고 하니 자주 사용하는 배치 명령어를 좀 편리하게 실행시켜 보자는 목적의 어플(?) 입니다.
파라메터를 동반하는 배치의 CMD창을 띄워서 경우 해당 경로를 찾아가서 명령문을 치고 파라메터도 치고
엔터를 꽝 때려야 합니다.
헌데 주어야 할 파라메터가 많고 이름도 길고 똑같은 걸 반복작업 한다면?
여간 짜증나는일이 아닐 수 없지 않겠지요? .. 뭔 말이야 -_-

그리하여 탄생한 그지깽깽이 시리즈..
이렇게 생긴 녀석입니다. 그지같다.. -_-
사용자 삽입 이미지



셀렉트 박스에서 미리 기입해 놓은 파라메터를 선택하고 Run을 누지르면 실행 된다.
박스를 두개로 나눠 놓은 것은.. 그냥 단순히 구분용도이다. ㅡㅡ 별 뜻 없음. ㅋ

이거슨 코드 ↓
[mungmung.hta]
<html>
 <head>
  <title>그지깽깽이 시리즈 No.6 [ 파라메터로 배치실행 Ver 1.0 ]</title>
  <HTA:APPLICATION
       ID="HelpBuildAll"
       APPLICATIONNAME="그지깽깽이"
       SCROLL="no"
       SINGLEINSTANCE="yes"
       WINDOWSTATE="normal"
  >
 
  <style>
   BODY
   {
      background-color: buttonface;
      font-family: Helvetica;
      font-size: 10pt;
      margin-top: 5px;
      margin-left: 5px;
      margin-right: 5px;
      margin-bottom: 5px;
   }
   
   
   .button
   {
      font-family: Helvetica;
      font-size: 8pt;
      width: 92px;
   
   }
   
   textarea
   {
      font-family: arial;
      font-size: 10pt;
   }
   
   select
   {
      font-family: arial;
      font-size: 10pt;
      width: 200px;
      margin-left: 0px;
   }
   
   
  </style>
 
  <script language="VBScript">  
   
    Sub Window_Onload
         
          window.resizeTo 430,610
          window.moveTo 100, 100
      End Sub
   
      Sub RunBuild
     
        cmd = "%comspec% /c d: & cd batch\run & batchcmd "
       
        For i = 0 to (WebBuildList.Options.Length - 1)
            If (WebBuildList.Options(i).Selected) Then
                webList = webList & WebBuildList.Options(i).Value & " "
            End If
        Next
       
        For i = 0 to (CompBuildList.Options.Length - 1)
            If (CompBuildList.Options(i).Selected) Then
                compList = compList & CompBuildList.Options(i).Value & " "
            End If
        Next       
               
        cmd = cmd + webList + compList
       
          Set objShell = CreateObject("Wscript.Shell")       
          objShell.Run cmd
         
      End Sub
 
  </script>
 
 </head>
 
 <body>
 <center><font color="blue"><b>☆ C:\ 루트에 복사해 두고 사용해야 합니다. ☆</b></font></center>
 ctrl(shift) + click 으로 다중 선택 가능합니다.
  <select size="30" name="WebBuildList" multiple>  
   <option value="aaaaa">aaaaa</option>
   <option value="bbbbb">bbbbb</option>
   <option value="ccccc">ccccc</option>
   
  </select>
   
  <select size="30" name="CompBuildList" multiple>
   <option value="qqqqq">qqqqq</option>
   <option value="wwwww">wwwww</option>
   <option value="eeeee">eeeee</option>  
  </select>  
 
  </p>
  <center>
  <button onclick="RunBuild">Run</button>
  </center>
 
 </body>
 
</html>

코드를 살짝 살펴 보면..
여기서 핵심은 배치 명령을 어떻게 실행시키는 것인가 이다.
별거 아닌거지만 HTA에서 실행 방법 찾아 내느라고 삽질을 좀 했다. 스트레스 짱 -_-


cmd = "%comspec% /c d: & cd batch\run & batchcmd "

이게 배치를 실행할 명령문이다.
D:\batch\run 폴더에 batchcmd 라는 배치 파일이 있어야 하겠지요.
그리고 이 배치는 다수의 파라메터를 받을 수 있다고 합시다.

그러면 이 배치가 받아 들여야 할 파라메터를 select 박스에서 가져 오는 겁니다.

For i = 0 to (WebBuildList.Options.Length - 1)
     If (WebBuildList.Options(i).Selected) Then
         webList = webList & WebBuildList.Options(i).Value & " "
     End If
Next

이런식으로 선택된 리스트를 가져와서 명령문을 실행 시킬 겁니다.

cmd = cmd + webList + compList
       
Set objShell = CreateObject("Wscript.Shell")        
objShell.Run cmd

요렇게 하면 배치가 실행이 되는 겁니다.
훗.. 답을 알면 쉬워 보이지만.. 예전에 했던 쓸대없는 캐고생에 승질이 또 나네요 -_-
그리구 이 파일은 C드라이브 루트에 위치해야 정상적으로 실행이 가능합니다.
이유는.. 나도 몰라. 그지같은 윈도우 라서 그런가? ㅋㅋㅋㅋ

쓸대없어 보이지만 이래저래 변경해서 나름 편리하게 사용하면 당신은 용자 -_-)b
반응형

댓글