노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


DOSBox(도스박스)는 도스 환경을 손쉽게 구현해 주는 에뮬레이터이다. 윈도95와 윈도98까지는 그런대로 도스 환경을 지원해 주었으나 윈도Me부터는 극악한 지원만을 하고 있기 때문에 옛 프로그램을 실행하기 위해서는 나름대로 준비해야 한다. 게다가 도스를 다룰 줄 아는 사람이라도 메모리 관리 등은 매우 귀찮은 작업이다. 이런저런 이유로 도스 환경만을 구현해 줄 수 있는 프로그램을 바라는 사람이 있었으나 마땅한 해결책이 없었다. 과거 버추얼PC가 꽤 잘 지원하였으나 MS로 개발사가 바뀌면서 영 아니게 되었다.

이런 사람들을 위해서 등장했다고 여겨지는 프로그램 바로 도스박스(DOSBox)이다.

프로그램 정보

  • 저작권자/제작자 : 도스박스 팀
  • 운영체제 : 리눅스, FreeBSD, 윈도 9x, 윈도 NT 4.0, 윈도 2000, 윈도 XP, 윈도 비스타, 맥 오에스 텐, OS/2, 팜 OS, RISC OS, BeOS 등
  • 버전 :  7.3 (2009년 5월 27일자)
  • 홈페이지 : http://www.dosbox.com/
  • 다운로드 페이지 : http://www.dosbox.com/download.php?main=1[각주:1]
  • 저작권/라이선스 : 프리웨어 / GPL
  • 평가 : @@@@@@@@@@ ( 8 / 10 ) - 가끔 한글과 관련한 부분에서 깨지거나 멈춘다. 최신 버전일수록 멈추거나 오류가 나타나는 비율이 줄어든다.
  • 설명 :

    • 특정 디렉터리를 드라이브로 인식하는 마운트 기능이 있다. 아울러 ISO 이미지를 CD-ROM으로 인식하여 마운트할 수도 있다.
    • 대부분의 게임을 지원한다. 다만 앞서 말한 한글 문제 때문인지, 한글이나 일본어, 중국어의 경우에는 가끔 화면이 깨지거나 멈추는 일이 있다. 그러나 최근 7.x 버전에서 발견하지 못한 문제이므로 그다지 걱정할 일은 없다.
    • 여러 가지 가이드(설명서, 도움말)를 제공하고 있다.
  • 기타 :

    • 취향에 따라 설치 버전과 휴대용 버전을 받아서 사용할 수 있다.

실행 화면

  • 도스박스 상태 화면
  • 도스박스 실행 화면
  • 도스박스 실행화면을 잡은 화면

관련글

관련 페이지


이 글은 스프링노트에서 작성되었습니다.


  1. 포터블버전은 http://portableapps.com/apps/games/dosbox_portable 페이지에서 찾을 수 있다. [본문으로]

'소프트웨어 > 소개' 카테고리의 다른 글

AVI-Mux GUI  (0) 2009.09.09
GSpot  (0) 2009.09.06
Windows Automated Installation Kit for Windows 7  (2) 2009.05.09
HxD  (2) 2009.04.23
MultiArc  (0) 2009.04.02
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며

IF 명령 확장은 IF 명령이 가진 기능을 추가하고 넓힌다는 뜻으로, IF 명령으로 여러 가지 다른 처리를 할 수 있도록 해 준다. 앞서 나온 IF 문자열에서도 일부 소개하였지만, 윈도XP의 IF 명령은 상당히 뛰어난 기능을 제공하고 있다. 대부분 IF 문자열 기능에 포함되어 있고, 여기에서는 IF 문자열에서 설명하지 않은 부분만을 설명하겠다.

말뜻

IF 명령 확장에는 세 문자로 이루어진 비교 연산자(연산자 확장)와 IF CmdExtVersion 구문 및 IF Defined 구문이 있다.

  • 세 문자로 이루어진 비교 연산자는 IF 문자열을 참조하세요.
  • IF CmdExtVersion 수 : 윈도XP의 도움말 및 지원 센터의 설명에 따르면, Cmd.exe의 명령 확장 기능과 관련된 내부 버전 번호가 '수'보다 크거나 같은 경우에만 참인 조건을 지정합니다. 첫째 버전은 '1'이며 의미있는 향상을 명령 확장에 추가할 때 하나씩 증가합니다. 명령 확장을 사용할 수 없게 설정하면 CmdExtVersion 조건은 항상 거짓입니다. 명령 확장이 사용 가능한지를 검사할 때도 사용할 수 있습니다. CmdExtVersion의 정확한 값을 알고 싶다면 명령행에서도 "echo %CmdExtVersion%"라고 입력해 보라.
  • IF Defined 환경변수 : 지정한 환경변수가 정의되어 있으면 참값을, 그렇지 않으면 거짓값을 돌려준다.

IF CmdExtVersion 구문

명령확장을 사용할 수 있는지를 사용할 수 있다. 또한 명령확장의 버전을 검사하여 배치파일 실행 여부를 판단할 때도 쓸 수 있다.

  1. if CmdExtVersion 2 (
  2. echo 윈도XP에서 명령확장을 사용할 수 있습니다.
  3. ) else echo 윈도XP가 아니거나 명령확장을 사용할 수 없습니다.

위와 같은 형식이 가장 기본적이다. echo 문은 예시일 뿐이니, 저 부분에 자신이 실행하기를 바라는 명령을 넣으면 된다.

또한 단순히 명령확장을 사용할 수 있는지를 알려면 다음과 같이 하면 된다.

  1. if CmdExtVersion 0 (
  2. echo 명령확장을 사용할 수 있습니다.
  3. ) else echo 윈도NT 계열이 아니거나 명령확장을 사용할 수 없습니다.

명령확장을 사용할 수 있다면 "if CmdExtVersion 0"은 무조건 참이 되어야 하므로 위의 예제는 명령확장을 사용할 수 있는지를 검증해 주는 코드가 된다.

IF Defined 구문

IF Defined 구문은 IF 문자열 구문의 확장으로 볼 수 있다.

  1. if not * == %var%* echo Variable %var% is defined.
  2. if not * == %var%* echo 환경변수 %var%이(가) 정의되어 있습니다.

위 두 문장은 출력문만 다를 뿐 완전히 같다. 환경변수가 정의되어 있다면 항상 문자열 값을 가지게 되므로 위의 구문에서 참값을 가지게 된다. 결국 "환경변수 %var%이(가) 정의되어 있습니다."라고 출력한다는 뜻이다. 이때 *(별표) 대신 다른 문자를 사용해도 결과는 같으나, %, ^, & 등은 사용하지 않는 것이 좋다. 특히 %와 ^는 배치파일에서 특별한 작용을 하므로 if문에 사용했을 경우 그 효과를 정확히 알고 사용해야 한다.

위의 예제를 Defined 를 이용하여 고치면 다음과 같다.

  1. if Defined %var% echo Variable %var% is defined.
  2. if Defined %var% echo 환경변수 %var%이(가) 정의되어 있습니다.

if Defined 환경변수 구문을 이용하게 되면 세 환경변수―%errorlevel%, %cmdcmdline% 및 %cmdextversion%―를 사용할 수 있게 됩니다. %errorlevel% 환경변수는 마지막으로 실행한 프로그램이 돌려주는 종료코드를 저장하고, %cmdcmdline% 환경변수는 마지막으로 실행한 명령줄을 저장합니다. 그리고 %cmdextversion% 환경변수는 앞서 설명했듯이 명령확장의 버전을 저장하고 있습니다.

과제

지난 번 과제는 다음 구문을 옳게 고치라는 문제였습니다.

  1. rem Compare.cmd
  2. IF /i NOT %1 EQU %2 ECHO %1 is equal %2 ELSE ECHO %1 is not equal %2 .

아래와 같이 하면 된다. 빨간 색 부분을 유심히 살펴보기 바란다.

  1. rem Compare.cmd
  2. IF /i %1 EQU %2 ( ECHO %1 is equal %2 ) ELSE ECHO %1 is not equal %2 .

다음 예고

GOTO문을 설명하기에 앞서 잠시 쉬어가는(?) 시간을 갖도록 하자. 다음에는 환경변수에 대해서 알아보겠다.

이 글은 스프링노트에서 작성되었습니다.

'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령  (6) 2009.05.16
GOTO 명령  (3) 2009.05.05
IF 문자열  (4) 2009.04.18
IF EXIST  (0) 2009.04.15
IF ERRORLEVEL에 쓰이는 종료코드  (12) 2009.04.14
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며

IF 문자열 비교 구문은 말 그대로 문자열을 비교하는 구문이다. 이것은 윈도NT 계열에서 추가된 환경 변수 등을 이용하여 여러 가지 작업을 할 수 있도록 해준다. 문자열의 내용을 분석하여 정수(십진수, 팔진수, 십육진수)로 변환하여 계산해 주기도 한다.

말뜻

IF 문자열 비교 구문에서는 일반적으로 등호를 두 개 겹쳐서 쓰게 된다.

  1. if [not] 문자열1==문자열2 명령 [else 구문]

위와 같은 형식을 이루게 된다. 이때 큰괄호( [ ] )로 묶인 부분은 반드시 쓸 필요는 없고 필요할 때 쓰면 된다. 또한 문자열에 공백을 포함하지 않았다면 따옴표를 사용하지 않아도 된다.

문자열 비교 구문의 명령 확장

확장 1

명령 확장이라고 말하기는 했으나, 사실 /i 선택자는 cmd.exe에 포함된 if 명령에서는 기본 선택자이다. 다만 도스의 if 명령과 호환성이 없기 때문에 확장이라고 칭했을 뿐이다.

문자열 비교 구문에서 /i 선택자를 쓰게 되면 그 기능을 확장할 수 있다. 이것은 대문자와 소문자를 무시하고 문자열을 비교하게 됩니다.

  1. IF STRING==string ECHO STRING is string.

위의 문자열 비교 구문은 거짓을 돌려주므로 화면에 아무것도 보여주지 않는다. 그러나 아래 문자열 비교 구문은 참을 돌려주므로 화면에 "STRING is string."이라는 문자열을 출력해 준다.

  1. IF /i STRING==string ECHO STRING is string.

확장 2

문자열 비교 구문에서는 세 문자로 이루어진 비교 연산자를 사용할 수 있다. 이것은 /i 선택자를 사용하여 융통성을 가지는데, 예컨대 숫자로만 이루어진 문자열은 수로 변환하여 비교해 준다.

세 문자로 이루어진 비교 연산자에는 다음과 같은 것이 있다.

  • EQU (같음)
  • NEQ (같지 않음)
  • LSS (보다 작음)
  • LEQ (작거나 같음)
  • GTR (보다 큼)
  • GEQ (크거나 같음)

비교 연산자는 언뜻 보아서는 숫자로 이루어진 문자열에만 쓰일 듯이 보이지만 로마자 등으로 이루어진 문자열에도 쓰일 수 있다.

예제 1

  1. IF /i 22 EQU 026 ECHO 22 is 026.

위의 코드는 10진수 22와 8진수 026을 비교하는 구문이다. 당연히 두 값은 크기가 같으므로 화면에 문자열을 출력해 준다.

  1. IF /i 026 EQU 0X16 ECHO 026 is 0X16.

위의 코드는 8진수 026과 16진수 0x16을 비교하는 구문이다. 당연히 두 값은 크기가 같으므로 화면에 문자열을 출력해 준다. 

두 예제는 /i 선택자가 문자열을 확장하여 "일반적으로 해석"하는 예시이다. 다시 말해 문자열 22는 10진수 22로 해석해 주며, 026은 8진수로, 0x16은 16진수로 해석해 준다. 10진수는 0으로 시작할 수 없으며, 0으로 시작하는 수는 8진수이거나 16진수가 된다. 또한 0으로 시작하는 문자열 가운데 0x로 시작하는 문자열은 16진수로 여기게 된다.

하지만 089 등의 문자열은 올바르지 않으므로 오류가 발생하게 된다. 이는 8진수에 8과 9와 같은 숫자는 존재하지 않기 때문이다. 마찬가지로 0x9G 등의 문자열도 올바르지 않다고 여긴다. 이럴 경우 문자열을 수로 확장해 주지 않고, 문자열 자체(리터럴 문자열)로서 비교하게 된다. 참고로 순수한 문자열을 리터럴 문자열(literal string), 수치로서 변환되는 문자열을 숫자 문자열(number string / numeric string)이라고 부른다.

한편 다음에 오는 두 비교문은 서로 다른 결과를 가진다.

  1. IF /i 22 EQU 026 ECHO 22 is 026.

위의 비교문은 수치 비교문으로 참값을 돌려주므로 "22 is 026."을 출력한다.

  1. IF /i 22 == 026 ECHO 22 is 026.

위의 비교문은 리터럴 문자열 비교문으로 거짓값을 돌려주므로 아무것도 출력하지 않는다.

다시 말해 숫자로 이루어진 문자열을 숫자 문자열로서 비교하려면 반드시 문자로 이루어진 비교 연산자를 사용해야 한다.

또한 다음과 같이 사용할 수도 있다.

  1. IF /i abc EQU ABC ECHO abc is ABC.

또는

  1. IF /i NOT abc EQU ABC ( ECHO abd is ABC ) ELSE ECHO abd is not ABC .

앞서 말했듯이 세 문자로 이루어진 비교 연산자로 숫자 문자열뿐만 아니라 리터럴 문자열까지 비교할 수 있다.

  1. IF /i abc NEQ ABC ( ECHO abd is ABC ) ELSE ECHO abd is not ABC .

위의 비교문도 정상 작동한다.

예제 2

그렇다면 작거나 같음을 비교할 때는 어떻게 동작할까? LSS (보다 작음), LEQ (작거나 같음), GTR (보다 큼), GEQ (크거나 같음)과 같은 세 문자로 이루어진 비교 연산자를 이용하여 대문자와 소문자를 비교해 보자,

  1. IF /i 22 LSS 027 ECHO 22 is less than 027.

위 예제는 10진수 22가 8진수 027보다 작으면 뒤따르는 문자열을 출력하라는 문자열 비교문입니다.

그러면 다음과 같은 두 가지 예문은 어떻게 작동할까?

  1. IF /i abc LSS ABC ECHO abc is less than ABC.
  2. IF abc LSS ABC ECHO abc is less than ABC.

우선 1행은 아무런 출력이 없다. 왜냐하면 /i 선택자 때문에 대문자와 소문자를 무시하고 비교했기 때문이다. 그러나 2행은 소문자 abc가 대문자 ABC보다 더 작은 값으로 해석되어 문자열 "abc is less than ABC."을 출력해 준다.

  1. IF ABC GTR abc ECHO ABC is greater than abc.

마찬가지로 위의 코드는 대문자 ABC가 소문자 abc보다 더 큰 값으로 해석되어 "ABC is greater than abc."라는 문자열을 출력해 준다.

위와 같이 대문자와 소문자 비교에서 대문자가 소문자보다 더 크다고 판정함을 알 수 있다.

예제 3

그 다음으로 문자간 비교를 해볼 수 있다.

  1. IF d GTR a ECHO D is greater than A.

위의 예제는 문자여을 출력해 준다. 다시 말해 문자열 d가 문자열 a보다 더 큰 값을 가진다고 판단함을 알 수 있다. 반대로 아래와 같은 비교문도 성립한다.

  1. IF a LSS d ECHO a is less than d.

로마자 알파벳을 비교할 때 순서가 빠른 문자를 더 작다고 판단함을 알 수 있다.

  1. IF 가 LSS 나 ECHO 가 is less than 나.

한글 문자열을 비교할 때도 성립한다.

  1. IF 가 LSS d ECHO 가 is less than d.

한글을 로마자보다 더 작다고 판정하고 있다.

과제

아무도 검사하지 않는 과제가 또 나왔습니다. 헤헤 ^^a

  1. rem Compare.cmd
  2. IF /i NOT %1 EQU %2 ECHO %1 is equal %2 ELSE ECHO %1 is not equal %2 .

위의 배치 파일이 정상적으로 작동하도록 고쳐 보자.

다음 예고

IF 명령을 하나씩 짚어보자. (4) : IF 명령확장

이 글은 스프링노트에서 작성되었습니다.

'스크립트 > 배치파일' 카테고리의 다른 글

GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF EXIST  (0) 2009.04.15
IF ERRORLEVEL에 쓰이는 종료코드  (12) 2009.04.14
IF 기본 설명  (6) 2009.04.09
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

아크로에디트(AcroEdit)는 마이크로소프트 윈도(Windows 95 또는 이후 버전, Windows NT 4.0 또는 이후 버전) 환경에서 사용 가능한 텍스트 편집기입니다.

아크로에디트를 쓰기 전에는 이지패드와 이지뷰어를 사용했다. 그런데 그쪽 개발자와 마찰이 생겨서 아크로에디트를 쓰기 시작했다. 초기 아크로에디트의 실행 속도는 이지뷰어나 이지패드에 비해 그리 빠른 속도가 아니었다. 하지만 너무 느린 이지뷰어/이지패드의 업데이트에 질려 있던 나는 아크로에디트 개발자의 성실함에 반해 지금까지 쓰고 있다.

프로그램 정보

  • 저작권자/제작자 : 김성동
  • 운영체제 : 윈도95 또는 이후 버전, 윈도NT 4.0 또는 이후 버전
  • 버전 : 버전 0.9 / 빌드 0.9.19.84 (2008년 12월 17일자)
  • 홈페이지 : http://www.acrosoft.pe.kr/
  • 다운로드 페이지 : http://www.acrosoft.pe.kr/board/ae_download
  • 저작권 : 프리웨어
  • 소스 공개 여부 : 소스 비공개
  • 평가 : @@@@@@@@@@ ( 8 / 10 )
  • 실행 화면 :

    제작자가 홈페이지에 공개한 실행화면
    20090322ae00(1).png
    내 컴퓨터에서 실행한 화면
  • 설명 :
    오류를 지속적으로 보정하여 완성도가 높은 프로그램이 되어 가고 있다. 또한 쉬운 사용법과 문법 강조 기능을 갖춘 기본에 충실한 문서 편집기이다.
  • 기타 :
    강력한 기능을 바라는 사용자에게는 권하지 않는다. 그런 사람은 울트라에디트에디트플러스를 사용하기 바란다.

관련글

없음

이 글은 스프링노트에서 작성되었습니다.

'소프트웨어 > 소개' 카테고리의 다른 글

Windows Automated Installation Kit for Windows 7  (2) 2009.05.09
HxD  (2) 2009.04.23
MultiArc  (0) 2009.04.02
Total Commander  (0) 2009.03.28
OpenCapture  (0) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

말뜻

배치파일에서 이용할 수 있는 명령어란 배치파일에서 불러들여 실행할 수 있는 내부 명령어 또는 외부 명령어를 일컫는다. 내부 명령어는 명령어 셸에 내장된 명령어를 가리키고, 외부 명령어는 실행 파일과 같은 파일로서 존재한다.

실행 파일은 주로 .COM, .EXE, .BAT와 같은 것이 있으며, 윈도NT 계열에서는 .CMD 파일도 쓰인다. 그밖에 윈도 스크립트인 .VBS, .SCF 파일도 실행이 가능하다.

배치파일에서 이용할 수 있는 명령어는 명령 프롬프트에서 "set" 명령을 입력하고 <Enter>를 누르면 보이는 목록에서 PATHEXT를 찾으면 확인할 수 있다.

윈도용 파일 실행

도스를 수박 겉핥기 식으로 배운 사람은 배치파일에서 윈도용 프로그램을 실행할 수 없다고 생각할 수도 있다. 그럼 간단한 실험을 하자.

명령 프롬프트를 열고 다음과 같이 입력한다.

copy con note.cmd <Enter>
notepad.exe <Enter>
pause <Enter>
<Ctrl-Z>

이제 note.cmd를 입력하면 노트패드, 곧 "메모장"이 실행되어야 한다. 둘째 줄에 입력한 pause는 "잠시 멈춤"을 뜻하는 내부 명령어이다. 메모장이 실행되지 않는다면 컴퓨터에서 notepad.exe가 없거나 경로 설정이 되어 있지 않다는 뜻이다.

스크립트 파일 실행

우리가 가장 쉽게 접할 수 있는 스크립트 파일은 explorer.scf 파일이다. 이 파일은 윈도 폴더에 있다.
위의 PATHEXT에는 없지만 SCF 파일도 실행이 가능하다.

명령 프롬프트를 열고 다음과 같이 입력한다.

copy con exp.cmd <Enter>
explorer.scf <Enter>
pause <Enter>
<Ctrl-Z>

자신의 윈도XP가 정상이라면 윈도 탐색기가 실행되어야 한다.

또한 .SCF 스크립트 외에 .MSC 파일도 실행할 수 있다.

copy con df.cmd <Enter>
dfrg.msc <Enter>
pause <Enter>
<Ctrl-Z>

역시 자신의 윈도XP가 정상이라면 디스크 조각 모음이라는 애플릿이 실행되어야 한다. 이때 .MSC 파일은 스크립트 파일은 아니다. 노트패드에서 읽어 들이면, 그 파일은 XML 파일임을 알 수 있다. 윈도가 특별하게 작동시키는 파일이다.

다음 예고

주석 다는 법과 화면에 메시지 출력하는 법을 알아보기로 하자.

'스크립트 > 배치파일' 카테고리의 다른 글

배치파일에 매개변수 전달하기 2  (5) 2009.04.04
배치파일에 매개변수 전달하기  (0) 2009.04.01
배치파일 멈추기  (1) 2009.03.29
그밖에 출력  (2) 2009.03.26
주석 및 화면 출력  (3) 2009.03.23
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함