블로그 이미지
초딩입맛제주아재
하고 싶은 것만 하며 살고 싶다

calendar

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
2007. 2. 7. 16:45 Programing

퇴근하기전 매일매일 엑셀을 이용해서 업무일지를 쓴다.
정말 하기 싫은 작업이다...
엑셀을 실행하고 어제 작성한 업무일지를 불러와서 어제 뭘했나 대충 살펴보고
날짜를 오늘 날짜로 수정한뒤 내용을 싸그리 지우고 오늘 작업한걸 써 나간다.
다 쓰고 새이름으로 저장하기 버튼을 클릭해서 업무일지070207.xls 처럼 날짜로 네이밍을 해서 저장한다.
그런데 가끔 정신이 나갈때면 editplus 에서 하던 버릇이 나와서 Ctrl + S 를 눌러서 어제 작성한 업무일지에
덮어써버리곤 한다.

오늘도 역시 그랬다. -_-;;
어제의 기억은 흔적조차 남지 않게 되었고 인쇄한 업무일지를 잃어버리게 되면
어제 나는 한일이 없게 되는 것이다.

언제까지 이렇게 방치해둘 순 없었다.
그래도 명색이 프로그래머 아닌가.
뭔가 이 비 생산적인 굴레를 벗어날 길이 없을까 고민하다 도스시절을 회상하며 배치파일을 만들기로 했다.

전에 달룟님과 대화중 smalltalk 이미지 백업하는걸 배치파일로 만들어보고자 했던 기억도 있고
뭔가 새로운걸 해보고 싶던 찰나에 이번 프로젝트(?)는 운명적인 것이리라.

kldp에서 스크립팅에 관련한 자료를 찾았다. >>kldp스크립팅자료

bash쉘에 관련된 내용이지만 도스 배치파일에 대한 이야기도 살짝 나온다.
덕분에 bash쉘 스크립팅을 공부해야할 이유가 생겼다.

배치파일 소스는 아래와 같다.


@echo off

IF NOT EXIST %DAILY_REPORT_HOME%업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls (
  FOR /F %%i IN ('DIR %DAILY_REPORT_HOME% /B /AA /O-D') DO (
       copy %DAILY_REPORT_HOME%%%i %DAILY_REPORT_HOME%\업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls > NUL
       goto end
  )
)

:end

문법이 참 적응하기 어려웠지만 12살때 배웠던 GW-BASIC도 생각이 나고
하면서 '참 재밌다!!' 라는 생각을 했다.


소스 풀이를 하자면.....

환경변수로 등록된 업무일지 디렉토리(%DAILY_REPORT_HOME%)안에

오늘 날짜로 된 파일(업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls)이 없으면

가장 최근의 업무일지('DIR %DAILY_REPORT_HOME% /B /AA /O-D' 의 결과중 맨 처음것)를

오늘 날짜로 복사(copy %DAILY_REPORT_HOME%%%i %DAILY_REPORT_HOME%\업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls > NUL)

한다......휴~


가장 어려웠던 부분은 최근 파일명 추출이었다.
변수 운용하는 방법을 모르고 (환경변수가 아닌 지역변수 개념의.. 가능한지 모르겠다)
dir 의 결과중 첫라인 또는 마지막라인 만 리턴하는 방법(이건 꼭 알고 싶은데...있을것 같기도 하고..)


그래서 생각한 것이 FOR, 반복문이다.
DIR {디렉토리} /B /AA /O-D 는 {디렉토리}에 있는 순수한 파일(/AA)만을 출력해준다.
물론 쓸데없는 header 와 footer 도 없다(/B). 오로지 파일명만 역순(/O-D)으로 출력해준다.
이 결과물을 가지고 FOR문을 돌리는데
제일 처음 값만 출력하고 바로 :end(goto end)로 가버리고 반복문은 중지된다.

이 배치파일은 내가 출근한후 PC를 켜고 윈도우가 로딩되면 실행되도록

모든 프로그램 > 보조프로그램 > 시스템도구 > 예약된 작업  으로 등록을 해두었다.

내일 아침 출근후 확인해 보는일만 남았다...

THE END...



컴퓨터는 사람을 편하게 하기 위해 만들어진 기계이다.
하지만 요즘은 컴퓨터로 인해 스트레스 받는 사람들이 더 많고
컴퓨터때문에 해야 할 일들이 더 많아지고 있다.

사소한것 하나라도 편하게 바꿔보자!!
그것이 개발자들이 해야할일이 아니겠는가??


'Programing' 카테고리의 다른 글

[펌]포인터  (0) 2007.02.22
윈도우 스크립팅 맛들이기 - Smalltalk 이미지 파일 백업 배치파일  (2) 2007.02.07
euc인코딩  (0) 2007.01.09
위기지학(爲己之學)  (0) 2006.11.29
Drag & Drop로 구현한 쇼핑몰 샘플  (0) 2006.11.09
posted by 초딩입맛제주아재