역시나 프로그래머에게는 단순 노동은 어떻게든 컴퓨터에게 시키고 싶어하는 본능(?)이 잠재되어 있는 것인가?

두가지 귀찮은 상황이 발행하였다.
한가지는 소스세이프에서 링크된 파일은 최신버전을 받아오지 않으면 자동 동기화가 되지 않는다는 사실이다. -_-;(소스파일이 다르면 컴파일 할때 엄청나게 다른 결과가...)

두번째는 배포한 바이너리가 같은지 비교하는 작업이다. 물론 MD5 해쉬알고리즘으로 키 값을 뽑아내서 비교하는 방법도 있고, 바이너리 크기와 날짜를 비교하는 무식(?)한 방법도 있겠지만 Simple is Best를 원했다.

결국 눈이 간곳은 바로 CMD 명령어 "COMP" <--- 이놈이었다.
그러나 바로 OTL 주저 않게 되었는데, 이놈은 원본 파일 대상 파일을 1개만 비교하고 싶어도 자꾸 계속 비교하시겠습니까? Y / N 을 입력하라고 한다.

이 얼마나 비 생산적인 물음인가?

이 문제점에서 포기한다면 프로그래머가 아니지.. 흠흠..
나름데로 고민했고, 결국 해결 방안을 찾았다. 그래서 많은 분들에게 쉬운 방법을 알려드리고자
이렇게 솔루션을 공개하고자 합니다.

파일 이름 : compare.bat

@echo off
comp "%1" "%2" < n.txt
 
IF "%ERRORLEVEL%" == "0" GOTO END
ECHO
ECHO ========================================
ECHO %1 원본 파일과
ECHO ----------------------------------------
ECHO %2 대상 파일이 일치하지 않습니다!
ECHO ========================================
pause
 
:END

위의 파일에서 중요한 점은 n.txt 이다. n.txt가 뭔가요? 하고 반문하신다면 프로그래머의 기질이 있으신것이고, < 리다이렉션만 보고 결과를 아셨다면, DOS 부터 열심히 컴퓨터를 해보신 분일 것입니다.

파일이름 : n.txt

N

뭐 거창한것은 없고 단지 N 문자만 추가하였습니다.

n.txt를 만드는 방법은 다음과 같이 하시면 됩니다.
copy con n.txt
N
[여기서 ctrl + z 키를 누르시고 엔터하세요.]

여기까지 보셨다면 < 입력으로 파일 내용을 넣고 "N + 엔터"를 입력하고 싶은 저의 마음을 아셨을 것 입니다.( T_T 이렇게 쉬운걸 장장 10분동안 삽질했습니다. OTL)

자 이제 우리가 만든 compare.bat를 대량으로 써먹고 싶은 충동이 생겼습니다.
그렇다면 다음과 같이 하시면 됩니다.

파일이름 : comp files.bat
call compare.bat "d:\1.txt" "d:\1.txt"
call compare.bat "d:\1.txt" "d:\2.txt"
call compare.bat "d:\2.txt" "d:\1.txt"
call compare.bat "d:\2.txt" "d:\2.txt"
 
REM - REM 은 주석 처리를 하겠다는 뜻! 실행하지 않는다.
REM call compare.bat "d:\2.txt" "d:\1.txt"
:: call compare.bat "d:\2.txt" "d:\2.txt"

:: REM 대신 콜론 2개를 연속해서 써도 주석 처리된다.!!

파일 경로에 ["]따움표를 입력하는 이유는 cmd 입력라인에 공백문자 혹은 특수문자가 들어가면 중간에 경로를 끊어서 입력받기 때문에 저렇게 경로를 묶어 줍니다. 그럼 아무리 긴 경로(255 문자)라도 잘 입력 받을 수 있겠죠 ^^;;

자 이제 이것을 기본으로 여러분의 입맛에 맞게 수정하여 쓰시면 되겠습니다.
작성하기 귀찮으신 분들을 위해서 zip으로 올리는 센스!

지금까지 은근히 귀찮은 파일 비교 검사를 마치겠습니다.
소스파일에서 틀린 위치 비교하는 것은 다른 툴을 이용하세요. windiff나 TSVN에도 좋은 툴 많아요.
2007/07/15 22:36 2007/07/15 22:36

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요

  1. snaiper 2007/07/16 00:43 고유주소 고치기 답하기

    comp 라는 것도 있었군요. 몰랐습니다. 저는 batch 파일에서 이용할거라면 그냥 fc 쓰고 말았는데..말이죠.

  2. TTF 2007/07/17 00:47 고유주소 고치기 답하기

    fc라는 좋은 명령어가 있었군요. fc가 더 좋네요. ㅎㅎ
    다음에는 fc를 이용해서 파일 비교하는 것이 더 좋겠네요. 좋은 정보 감사드립니다.