[펌][팁]윈도우 스크립트

윈도우 스크립트 


[출처] 윈도우 스크립트|작성자 탈님



리눅스 사용자들은 쉘스크립트를 만들고 실행하는 것에 많이 익숙하실 겁니다. 그도 그럴것이, 쉘스크립트를 사용하지 않으면 엄청난 양의 타이핑을 감내해야 하기 때문이지요. 리눅스의 많은 부분이 쉘스크립트로 이루어져 있고, OS의 중요한 부분을 차지하고 있는 만큼 강력한 기능을 갖추고 있습니다.
윈도우에서도 쉘스크립트를 사용할 수 있습니다. 리눅스의 bash 쉘 같은 강력함은 없지만 기본적인 매크로를 작성하고 실행할 능력은 됩니다. 하지만 윈도우 사용자는 마우스로 아이콘을 클릭하는 동작에만 익숙하기 때문에 윈도우에서도 스크립트를 짤 수 있다는 사실을 모르지요.

제가 소개해 드릴 팁은 “여러 프로그램 한 번에 실행시키기” 일명 매크로입니다.
저는 컴퓨터를 켜자마자 하는 작업이 몇 있습니다. 일단 웹브라우저를 실행시키고, 메일 클라이언트를 켜고, IDE를 실행시키고, 탐색기를 열어 특정 폴더에 놓아 둡니다(서브버전 때문입니다). 저 각각의 작업은 최소한 한 번의 클릭이 소요됩니다. 그러니까, 다 합치면 네 번의 클릭을 해야 하네요. 이 일련의 작업을 한 번의 클릭으로 할 수 있다면 좋겠죠? 그걸 도와 주는 것이 바로 윈도우의 start 유틸리티와 배치 파일입니다.

배치 파일은 bat라는 확장명을 가지고 있습니다. 안에 들어가는 건 일반 텍스트이지만 실행이 가능하고, 실행하면 명령 프롬프트에 해당 문서파일의 내용을 직접 타이핑한 것과 같은 효과를 주게 됩니다.

우선, 메모장을 엽니다. 그냥 빈 상태로 열어만 두세요.

그리고, 아래 그림에서 보이는 것과 같이, 실행하고자 하는 아이콘의 등록 정보 창을 엽니다.


빠른 실행 아이콘이든, 바탕 화면 아이콘이든, 시작 버튼에 등록된 프로그램이든 상관없습니다. 저 ‘등록 정보'(Properties) 는 마우스 오른쪽 버튼을 누르면 나오는 것은 잘 아시죠?
(제가 지금 미국이라서 영문 윈도우 화면으로 설명드리고 있습니다. 양해바랍니다)



이게 ‘등록 정보’ 창입니다. 필요한 것은 ‘Target’ 부분입니다. 한글로 뭐라고 쓰여 있었는지 잘 기억이 안 나네요. 혹시 ‘Start in:’ 부분이 ‘Target’과 다르신 분은 ‘Start in:’ 도 눈여겨 보셔야 합니다. 대부분, 거의 대부분 ‘Start in:’과 ‘Target’은 맨 끝만 빼고 똑같습니다. 그러니까 ‘Start in:’ 이 ‘Target’의 앞부분과 같다면 신경 쓰실 필요가 없습니다.(거의 90%는 같지 않을까 싶네요.)

‘Target’을 메모장에 복사합니다.


“C:Program FilesMicrosoft Visual Studio .NET 2003Common7IDEdevenv.exe”

다음, 이걸 다음과 같이 고칩니다.


start /D”C:Program FilesMicrosoft Visual Studio .NET 2003Common7IDE” /B devenv.exe

start 명령은 리눅스 쉘스크립트의 & 과 같습니다. 그러니까, 작업을 백그라운드로 실행시키게 해 주는 유틸리티입니다. 저걸 사용하지 않으면 한 프로그램이 실행되고, 그 프로그램이 종료돼야 다음 프로그램이 실행됩니다. 아마 이런 식의 동작은 대부분의 사용자가 원하는 동작이 아니겠죠? 어쨌든 윈도우에서는 여러 창을 동시에 띄워 작업하는 것이 일반적이니까요.

start 명령의 매뉴얼을 보면 다음과 같이 쓰여 있습니다.


START [“title”] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/B] [command/program]
      [parameters]

    “title”     Title to display in  window title bar.
    path        Starting directory
    B           Start application without creating a new window. The
                application has ^C handling ignored. Unless the application
                enables ^C processing, ^Break is the only way to interrupt
                the application
    I           The new environment will be the original environment passed
                to the cmd.exe and not the current environment.
    MIN         Start window minimized
    MAX         Start window maximized
    SEPARATE    Start 16-bit Windows program in separate memory space
    SHARED      Start 16-bit Windows program in shared memory space
    LOW         Start application in the IDLE priority class
    NORMAL      Start application in the NORMAL priority class
    HIGH        Start application in the HIGH priority class
    REALTIME    Start application in the REALTIME priority class
    ABOVENORMAL Start application in the ABOVENORMAL priority class
    BELOWNORMAL Start application in the BELOWNORMAL priority class
    WAIT        Start application and wait for it to terminate
    command/program
                If it is an internal cmd command or a batch file then
                the command processor is run with the /K switch to cmd.exe.
                This means that the window will remain after the command
                has been run.

                If it is not an internal cmd command or batch file then
                it is a program and will run as either a windowed application
                or a console application.

    parameters  These are the parameters passed to the command/program


If Command Extensions are enabled, external command invocation
through the command line or the START command changes as follows:

non-executable files may be invoked through their file association just
    by typing the name of the file as a command.  (e.g.  WORD.DOC would
    launch the application associated with the .DOC file extension).
    See the ASSOC and FTYPE commands for how to create these
    associations from within a command script.

When executing an application that is a 32-bit GUI application, CMD.EXE
    does not wait for the application to terminate before returning to
    the command prompt.  This new behavior does NOT occur if executing
    within a command script.

When executing a command line whose first token is the string “CMD “
    without an extension or path qualifier, then “CMD” is replaced with
    the value of the COMSPEC variable.  This prevents picking up CMD.EXE
    from the current directory.

When executing a command line whose first token does NOT contain an
    extension, then CMD.EXE uses the value of the PATHEXT
    environment variable to determine which extensions to look for
    and in what order.  The default value for the PATHEXT variable
    is:

        .COM;.EXE;.BAT;.CMD

    Notice the syntax is the same as the PATH variable, with
    semicolons separating the different elements.

When searching for an executable, if there is no match on any extension,
then looks to see if the name matches a directory name.  If it does, the
START command launches the Explorer on that path.  If done from the
command line, it is the equivalent to doing a CD /D to that path.

샬라샬라… 영문 윈도우라서 전부 영어로… 뭐 실행 우선순위를 지정한다느니 어쩌구저쩌구 써 있네요. /D 옵션은 시작 디렉토리를 지정하고, /B 옵션은 명령 프롬프트 창을 띄우지 않고 프로그램을 실행한다는 옵션입니다. 즉,


start /D”C:Program FilesMicrosoft Visual Studio .NET 2003Common7IDE” /B devenv.exe

이것이 의미하는 바는 “C:Program FilesMicrosoft Visual Studio .NET 2003Common7IDE” 디렉토리로 들어가서 devenv.exe 를 실행하되, 명령 프롬프트 창을 띄우지 말고 하라. 라는 뜻입니다.

계속 이런 식으로 붙여 보죠.


start /D”C:Program FilesMozilla Firefox” /B firefox.exe
start /D”C:Program FilesMicrosoft Visual Studio .NET 2003Common7IDE” /B devenv.exe
start /D”C:Program FilesNUnit 2.4.7bin” /B nunit.exe
start /D”C:Program Filesmozilla” /B thunderbird.exe
start /D”C:Program FilesMicrosoft OfficeOffice12″ /B OUTLOOK.EXE /recycle
start /D”C:cygwin” /B Cygwin.bat
start /D”C:WINNT” /B explorer.exe “C:svnmyprojects”


자, 이제 이걸 저장을 합니다. 바탕 화면에 두시든 ‘내 문서’에 두시든 ‘새 폴더’에 두시든 그건 자유입니다. 저는 ‘내 문서’에 넣었습니다. 넣을 때 my-macro.bat 라고 입력하고 저장합니다. 끝에 .bat는 중요합니다.

그리고, ‘내 문서’ 로 가서, 해당 아이콘을 ‘빠른 실행’에 끌어다 놓습니다. 왜냐고요? 우리의 목적은 ‘원클릭 매크로’이니까요. 더블 클릭도 귀찮습니다. 헤헤~

bat 파일의 기본 아이콘은 톱니바퀴가 안에 들어있는 응용 프로그램 창 모양 아이콘()인데, 원하면 바꿀 수 있습니다. ‘등록 정보’ 안에서 ‘아이콘 변경…’을 찾아보세요.

저걸 클릭한 뒤의 화면은 따로 담지 않습니다. 그냥 순간 윈도우가 요란법석을 떨다가 짜잔 하고 한꺼번에 창을 띄우는 것을 보실 수 있을 겁니다.

참고로, 위의 매뉴얼을 찬찬히 보셨으면 아시겠지만, 실행 파일명에 꼭 실행 가능한 파일을 넣으란 법은 없습니다. .doc 파일을 ‘실행’하라고 하면 MS-Word가 뜨면서 해당 파일을 읽어들이게 됩니다. 이건 리눅스보다 편하네요. 리눅스는 꼭 ‘실행 파일명 + 데이터 파일명’ 이라고 적어 주어야 하거든요.

실행 우선순위를 세부 조정한다거나 하는 건 좀 오버스러운 감이 있어서 설명을 생략하겠습니다. 하지만 조심할 건 /REALTIME 을 이클립스에 적용한다거나 하면 안됩니다! 무거운 애플리케이션을 실시간 옵션을 주어 실행하면 여러 부작용이 생길 수 있습니다.
이메일 클라이언트에 /HIGH를 넣는 튜닝을 하는 것은 괜찮을 것 같네요.

유용하게 써주셨으면 합니다.


[출처] 윈도우 스크립트|작성자 탈님

댓글 남기기