Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: 배치 파일의 진화

내용으로 바로 넘어 가기


TokigunStudio3

1 / 3283   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

배치 파일의 진화

2005/02/05 AM 12:56 | 컴퓨터/프로그래밍 언어 | 5 comments | 0 trackbacks | AllBlog: vote, to pocket

나도 모르고 있었는데 Windows NT 계열의 배치 파일 해석기가 상당히 성능이 좋아진 모양이다. 방금 전에 모든 명령의 도움말을 뒤져 봤는데 잘만 쓴다면 충분히 쓸 만한 스크립트 언어로도 사용할 수 있지 않을까... 하는 생각이 든다. 몇 가지 예를 들자면...

* for /l 명령은 BASIC의 for 문처럼 동작한다.
* set /a 명령을 쓰면 수식 처리가 가능하다. c에서 되는 건 거의 다 되더라-_-;
* %random% 환경 변수를 쓰면 0부터 32767까지의 난수를 구할 수 있다.
* 환경 변수의 기능이 막강해졌다. 예를 들어서 %VAR:str1=str2%와 같은 형식으로 문자열 치환이 가능하고, %VAR:~0,-2%와 같은 형식으로 문자열 일부분을 반환할 수도 있으며, for 문의 경우 환경 변수에 modifier를 사용할 수도 있다.
* if 명령에 비교 연산자가 추가되었다. 예를 들어서 if "%a%" lss "%b%" goto a_is_less_than_b 같이 쓸 수 있다.
* 그 밖에 좀 생뚱맞긴 하지만 pushd랑 popd라는 무지막지한 명령이 추가되었다. (쿨럭;)

우리의 로망(..)인 99 Bottles of Beer 노래도 이 강력한 물건을 사용하면 간단하게 만들 수 있다.
@echo off
set bottle=bottles
set number=99
:loop
echo %number% %bottle% of beer on the wall,
echo %number% %bottle% of beer.
echo Take one down, pass it around,
set /a number=number-1
if "%number%"=="1" set bottle=bottle
if "%number%"=="0" goto done
echo %number% %bottle% of beer on the wall.
echo.
goto loop
:done
echo No more bottles of beer on the wall.
echo on
만세 -_-/

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=348

Comment: 정태영 (300/12/01 AM 11:07)

bash 를 따라하나보군요 버럭!! pushd popd까지 생겼다니..

Comment: mono* (2005/02/05 AM 07:35)

7살때 컴퓨터 제일 처음 사고 할짓없어서 하던 일이 배치파일 만들기였다는게 생각나는군요 -_-

아 추억의 배치파일..

Comment: 토끼군 (2005/02/05 PM 02:56)

정태영: 흐흐... 근데 bash에서 pushd/popd 역할을 하는 게 뭔가요?;
mono*: /e:off로 명령 확장을 끄면 옛날과 같은 방법으로 사용할 수 있습니다.

Comment: hey (2005/02/06 PM 02:44)

디렉토리를 저장해놨다가 다시 가져오는거죠.

Comment: 토끼군 (2005/02/06 PM 03:05)

hey: ... 그냥 환경 변수로 저장해 놓는다는 뜻인가요.

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).