Utility2010. 3. 10. 22:02
REM 만든이 : iuchoe form 부들 <.)++++<
REM 만든때 : 2010 3 10
REM 메일: ikw3179@naver.com
REM 저작권 : GPL


REM S_SRC(Source from folder), S_TAR(Source to folder)
REM B_SRC(Binary from folder), B_TAR(Binary to folder)
@cls

@SET S_SRC=D:\Prj\QPS_Iraq\src\BillPro_QPS
@SET S_TAR=D:\Dev_QPS\src_pb
@SET B_SRC=%S_TAR%
@SET B_TAR=D:\Prj\Binary_Release\QPS_BillPro
@SET LOG=D:\Users\Julyus25\Desktop\copy_result.txt
@SET METHOD=

@set L=############################################################

@SET B_SRC1=%B_SRC%\%"Source(pbl)"
@SET B_SRC2=%B_SRC%\%"Template2.0"

@echo %L:#=-%

@if not EXIST %S_TAR% MD %S_TAR%
@if not EXIST %B_TAR% MD %B_TAR%

@echo '1' for copy Source, 'Enter Key' for copy Binary.

@set /P METHOD=입력/METHOD:

@if "%METHOD%"=="" (
    set METHOD=Binary
)

@if "%METHOD%"=="1" (
    set METHOD=Source
)

@if "%METHOD%"=="Source" (
REM @ECHO ●[%DATE:~0,10% %TIME:~0,8%]>>%LOG%
@ECHO  [%S_TAR%] ●*.PBL
XCOPY %S_SRC%\*.PBL %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.OPT %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.PBW %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.PBT %S_TAR% /e /s /d /c /y /i
REM @ECHO [%S_TAR%]●*.DLL, *.EXE, *.JPG, *.BMP, *.GIF, *.PNG, *.ICO, *.INI
XCOPY %S_SRC%\*.DLL %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.EXE %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.JPG %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.BMP %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.GIF %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.PNG %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.ICO %S_TAR% /e /s /d /c /y /i
XCOPY %S_SRC%\*.INI %S_TAR% /e /s /d /c /y /i

PAUSE
EXPLORER %S_TAR%
)

@if "%METHOD%"=="Binary" (
@ECHO [%B_TAR%] ●*.PBD
XCOPY %B_SRC1%\*.PBD %B_TAR% /d /c /y /i
XCOPY %B_SRC2%\*.PBD %B_TAR% /d /c /y /i
@ECHO [%B_TAR%] ●*.DLL, *.EXE, *.JPG, *.BMP, *.GIF, *.PNG, *.ICO, *.INI
XCOPY %B_SRC2%\*.DLL %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.EXE %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.JPG %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.BMP %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.GIF %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.PNG %B_TAR% /e /s /d /c /y /i
XCOPY %B_SRC2%\*.ICO %B_TAR% /e /s /d /c /y /i
REM XCOPY %B_SRC2%\*.INI %B_TAR% /e /s /d /c /y /i

PAUSE
EXPLORER %B_TAR%
)








Posted by Julyus
Utility2010. 3. 10. 20:57

DOS 자주가는 디렉토리로 쉽게 이동하는 배치 스크립트


명령행에서 자주가는 디렉토리로 빠르게 이동하고 싶은데 그 때마다 디렉토리를 입력하는 것은 지루한 반복작업이 된다.
윈도우에서 배치파일에 자주가는 디렉토리를 등록하여 사용하는 방법을 있으면 좋을것 같아 다음과 같은 스크립트를 만들었다. 

아래의 SCD.bat 와 SCD_SET.bat 파일을 실행경로디렉토리에 만들고 SCD_SET 에 자주가는 디렉토리에 번호를 등록하여 사용하면된다.



SCD.bat
REM 만든이 : 부들 <.)++++<
REM 만든때 : 2009 9 1
REM 메일: ikw3179@naver.com
REM 저작권 : GPL

@cls

@SET MAIN=
@SET SCD=
@SET SUB=

@set L=############################################################

@set UBIN=C:\_bin
@set SCD_SET=%UBIN%\%0_set.bat

@type %SCD_SET%
@echo %L:#=-%

@set /P MAIN=입력/MAIN:

@if "%MAIN%"=="" (
    set SCD=%CD%
    set MAIN=_
)

@if "%MAIN%"=="#" np++ %SCD_SET%

@call %SCD_SET%
    
@dir /W %SCD%
@set /P SUB=입력/SUB:
@if not "%SUB%"=="" cd %SCD%\%SUB%



SCD_SET.bat

@if %MAIN%==1 set SCD=C:\MYSQL\smasta\py\pyLib\study
@if %MAIN%==2 set SCD=C:\MYSQL\smasta\py\pyHanQry
@if %MAIN%==3 set SCD=C:\_ik\python
@if %MAIN%==4 set SCD=C:\_ik\python
@if %MAIN%==5 set SCD=C:\_ik\python
@if %MAIN%==6 set SCD=C:\_ik\python
@if %MAIN%==7 set SCD=C:\_ik\python
@if %MAIN%==8 set SCD=C:\_ik\python
@if %MAIN%==9 set SCD=C:\_ik\python


사용방법은 간단한다. 명령행에서 SCD 을 입력하면 다음과 같은 화면이 뜨고 번호를 입력하면 해당디렉토리로 이동한다. 
C:\>SCD

@if %MAIN%==1 set SCD=C:\MYSQL\smasta\py\pyLib\study
@if %MAIN%==2 set SCD=C:\MYSQL\smasta\py\pyHanQry
@if %MAIN%==3 set SCD=C:\_ik\python
@if %MAIN%==4 set SCD=C:\_ik\python
@if %MAIN%==5 set SCD=C:\_ik\python
@if %MAIN%==6 set SCD=C:\_ik\python
@if %MAIN%==7 set SCD=C:\_ik\python
@if %MAIN%==8 set SCD=C:\_ik\python
@if %MAIN%==9 set SCD=C:\_ik\python
------------------------------------------------------------
입력/MAIN:1
 C 드라이브의 볼륨: MAIN
 볼륨 일련 번호: 742D-B8E0

 C:\MYSQL\smasta\py\pyLib\study 디렉터리

[.]                 [..]                [a]                 [a=#APCON.ji]
[c]                 [c=#클래스.ji]      [d]                 [d=#배포]
[m]                 [m=#문법관련]       [n]                 [n=#네트워크]
pyall_copy.py       [py_test]           [py_tk]             [py_ulib]
[r]                 [r=#소스샘플]       [s]                 [s=#기본라이브러리]
[w]                 [w=#웹]             [x]                 [x=#XML]
[z=#asasd._]        __py_copy.pyc
               2개 파일                 703 바이트
              24개 디렉터리  28,647,710,720 바이트 남음
입력/SUB:w

C:\MYSQL\smasta\py\pyLib\study\w>




Posted by 부들


Posted by Julyus
Utility2010. 3. 10. 14:35

http://blog.naver.com/oneandonlyme/120056037278

 

 

배치 파일 키워드/변수/연산자 와 그에 해당하는 쉘 동의어

 

배치 파일

쉘 스크립트

%

$

 명령어 줄 매개 변수 접두사

/

-

 명령어 옵션 플래그

\

/

 디렉토리 패스 구분자

==

=

 (같음) 문자열 비교 테스트

!==!

!=

 (다름) 문자열 비교 테스트

|

|

 파이프

@

set +v

 현재 명령어를 에코하지 말 것

*

*

 파일명 “와일드 카드”

>

>

 파일 재지향(덮어 쓰기)

>>

>>

 파일 재지향(덧붙여 쓰기)

<

<

 표준입력 재지향

%VAR%

$AVR

 환경 변수

REM

#

 주석

NOT

!

 뒤에 나오는 테스트 부정

NUL

/dev/null

 명령어 출력을 없애기 위한 “블랙홀”

ECHO

echo

 에코(bash 에는 옵션이 많이 있음)

ECHO .

echo

 빈 줄 에코

ECHO OFF

set +v

 다음에 나오는 명령어를 에코하지 말것

FOR %%VAR IN (LIST) DO

for var in [list]; do

 "for" 루프

:LABEL

없음

 라벨

GOTO

없음

 스크립트의 다른 곳으로 건너뜀

PAUSE

sleep

 일정 간격을 두고 잠시 대기

CHOICE

case나 select

 메뉴 선택

IF

if

 if-test

IF EXIST FILENAME

if [-e filename ]

 파일이 존재하는지 확인

IF !%N==!

if [ -z "$N"]

 매개변수인 “N"이 없다면

CALL

source 나 . (도트 연산자)

 다른 스크립트 포함

COMMAND /C

source 나 . (도트 연산자)

 CALL과 동일

SET

export

 환경 변수를 세트

SHIFT

shift

 명령어줄 변수 목록을 왼쪽으로 이동

SGN

-lt or -gt

 (정수) 부호(sign)

ERRORLEVEL

$?

 종료 상태

CON

stdin

 “콘솔“(표준입력)

PRN

/dev/lp0

 (일반적인) 프린터 디바이스

LP1

/dev/lp0

 첫 번째 프린터 디바이스

COM1

/dev/ttyS0

 첫 번째 시리얼 포트

 

 

 

도스 명령어와 유닉스 명령어 동의어

 

도스 명령어

유닉스 명령어

효과

ASSIGN

ln

  파일이나 디렉토리를 링크

ATTRIB

chmod

  파일 퍼미션 변경

CD

cd

  디렉토리 변경

CHDIR

cd

  디렉토리 변경

CLS

clear

  스크린 지우기

COMP

cmp or diff

  파일 비교

COPY

cp

  파일 복사

Ctl-C

Ctl-C

  정지(시그널)

Ctl-Z

Ctl-D

  EOF (end-of-file)

DEL

rm

  파일 삭제

DELTREE

rm -rf

  디렉토리의 하위 디렉토리까지 포함 삭제

DIR

ls -l

  디렉토리 보이기

ERASE

rm

  파일 삭제

EXIT

exit

  현재 프로세스 종료

FC

comm, cmp

  파일 비교

FIND

grep

  파일안에서 문자열 찾기

MD

mkdir

  디렉토리 생성

MKDIR

mkdir

  디렉토리 생성

MORE

more

  텍스트 파일 쪽단위(paging) 필터

MOVE

mv

  이동

PATH

$PATH

  실행파일들의 경로

REN

mv

  이름 바꾸기(이동)

RENAME

mv

  이름 바꾸기(이동)

RD

rmdir

  디렉토리 삭제

RMDIR

rmdir

  디렉토리 삭제

SORT

sort

   파일 정렬

TIME

date

  시스템 시간 보여주기

TYPE

cat

   파일을 표준출력으로 출력

XCOPY

cp

  (확장) 파일 복사

Posted by Julyus
Utility2010. 2. 18. 14:17


xcopy 백업시 에러여부를 기록하는 batch파일 만들기


  앙 백신서버의  Deploy폴더의 백신 배포패키지를   각 지점의 보조백신서버의 deploy라는 폴더로  자동으로 배포하고 싶었습니다.  30여개가 넘는 보조 백신서버의 배포 폴더내에도  중앙서버의  최신 배포파일을 똑 같이 유지하게 하려고 하니 고민이 되더군요..   전문 복제툴은 비쌀뿐 아니라 번거롭기도 하거든요..    변경된 것을  매번 복사해주기도 힘들고   매번 지점의 관리자들에게 새로운 파일을 받아가라고 하기도 힘들구요..   한번 이것을 자동화(?)하면 앞으로도 쓰임새가 매우 클 것 같은 예감이 들더군요..

  일복제는  아래의 조건을 만족해야 했습니다.
1. 트래픽을 절약하기 위해  변경된 파일만 복제되어야 한다.
2. 다수의 대상에게  복제가능해야 한다.
3. 복제 결과를 report받고 싶다. 
   (이때 복제 시작 시간과 마친 시간, 에러여부를 확인할수있어야한다.)
4. 무료툴을 써야 한다.

   본적으로  xcopy 명령을 사용했구요..  date, time, echo 등의 dos기본 명령을 사용하여  초간단 복제 배치파일을 만들었습니다.    복제작업이  진행되는 동안  오류가 생겨도 계속 진행이 가능하고   오류 여부를  copy_result.txt라는 파일로 출력할 수 있도록 했습니다.   제가 썼던 파일을 좀 편집해서  첨부했습니다.  잘 실행이 되더군요..  이 배치파일을 중앙서버에서  야간에 자동으로 실행되도록 스케쥴을 걸면  모든 작업이 끝이 나게 되죠..   물론 미리  각 지점의 보조 (백신)서버의 공유폴더에   write할 수있도록 공유권한 설정을 해두어야 합니다.   복제할 때 뿐 아니라  rename , 혹은 삭제등도  마찬가지 요령으로  적용이 가능하니   매우 유용하지 않을까 생각합니다.   ^^


echo ======= Copy Start =============== >> copy_result.txt   (copy_result.txt란 파일에 기록합니다)

date/t   >> copy_result.txt     (복제 시작 날짜를 기록합니다.)

time/t   >> copy_result.txt     (복제 시작 시간을 기록합니다.)

echo ======= Copy Start =============== >> copy_result.txt

 

echo "N--192.168.1.1" >> copy_result.txt     (서버 이름과 아이피를 먼저 출력합니다.)

xcopy d:\deploy\*.*  \\192.168.1.1\deploy\ /d /s /c /y /i 2>> copy_result.txt
 (  >> 는 xcopy명령의 성공,실패 모두  기록하고  2>> 는 실패시에만  기록합니다. )
 ( 추천사항: 2>>  많은 작업 내역이 있을 때 쉽게 구분가능하고  실패원인을 출력해줍니다.)

echo "I--192.168.2.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.2.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

echo "B--192.168.3.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.3.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

echo "B--192.168.4.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.4.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

echo "C--192.168.5.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.5.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

echo "A--192.168.6.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.6.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

echo "L--192.168.7.1" >> copy_result.txt

xcopy d:\deploy\*.*  \\192.168.7.1\deploy\ /d /s /c /y /i 2>> copy_result.txt

 

echo ======= Copy End =============== >> copy_result.txt

date/t   >> copy_result.txt      (복제 끝 날짜를 기록합니다.)

time/t   >> copy_result.txt       (복제 끝 시간을 기록합니다.)

echo ======= Copy End =============== >> copy_result.txt

 

 
vaccine_folder_update.bat 라는 배치파일을 실행하고 있는 모습니다.

사용자 삽입 이미지

결과파일인 copy_result.txt를 열어본 모습니다.
대상서버중에 한 서버인 A**********에 접속이 안되어 access denied란 로그가 떠 있습니다.
사용자 삽입 이미지
Posted by Julyus
Utility2009. 12. 30. 11:53
[Sample#1]
ECHO OFF
D:
CD\
IF NOT EXIST "D:\Project\QPS_Iraq\src\Bill_pro\Binary_Release" MD "Project\QPS_Iraq\src\Bill_pro\Binary_Release"
cd D:\Project\QPS_Iraq\src\Bill_pro\Binary_Release
ECHO ON
PAUSE
REM (복제 시작 날짜, 시간을 기록합니다.)
ECHO ●[%DATE:~0,10% %TIME:~0,8%]>> D:\Users\Julyus25\Desktop\copy_result.txt
ECHO -Copy from [Source(pbl)] to "D:\Project\QPS_Iraq\src\Bill_pro\Binary_Release">> D:\Users\Julyus25\Desktop\copy_result.txt
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Source(pbl)\*.pbd . /d /s /c /y /i >> D:\Users\Julyus25\Desktop\copy_result.txt
ECHO -Copy from [Template2.0] to "D:\Project\QPS_Iraq\src\Bill_pro\Binary_Release">> D:\Users\Julyus25\Desktop\copy_result.txt
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.pbd . /d /s /c /y /i >> D:\Users\Julyus25\Desktop\copy_result.txt
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.dll . /d /s /c /y /i
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.exe . /d /s /c /y /i /e
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.jpg . /d /s /c /y /i
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.bmp . /d /s /c /y /i
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.gif . /d /s /c /y /i
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.png . /d /s /c /y /i
xcopy D:\Project\QPS_Iraq\src\Bill_pro\Dev_QPS_BillPro\Template2.0\*.ico . /d /s /c /y /i
EXPLORER D:\Project\QPS_Iraq\src\Bill_pro\Binary_Release
REM Pause



[Sample#2]
COPY CON "원하는파일명".bat
-----------------------------------------------------------------------------------
ECHO OFF
SET DS=%DATE%
FOR /F "tokens=1-4 delims=-" %%A in ('echo %DS%') Do SET DS=%%A%%B%%C
REM 원하는 폴더로 이동 : 
D:
CD\
CD D:\DATA
REM 백업폴더 생성
IF NOT EXIST "Backup폴더명" MD "Backup폴더명\"%DS%
CD "Backup폴더명\"%DS%
REM 복사
XCOPY /E /Y "복사할파일명" "Backup폴더명\"%DS% > NULL
REM END
-----------------------------------------------------------------------------------



[Sample#3]
echo "지금 개발 중인 소스를 배포하시겠습니까?"
pause
  @echo off
  for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&SET MM=%%B&SET DD=%%C)
  d:
  cd\
  cd Develop\Workspace\_Release\
  mkdir Release_Daily
  mkdir Source(pbl)
  cd Source(pbl)
  cd..
  mkdir Template2.0
  cd Release_Daily
  mkdir %YY%-%MM%-%DD%
  CD %YY%-%MM%-%DD%
  mkdir Source(pbl)
  cd Source(pbl)
  cd..
  mkdir Template2.0
rem 중간날짜별 백업
xcopy D:\Develop\Source(pbl)\*.pbl d:\Develop\Workspace\_Release\Release_Daily\%YY%-%MM%-%DD%\Source(pbl) /D:%MM%-%DD%-%YY% /y
xcopy D:\Develop\Template2.0\*.pbl d:\Develop\Workspace\_Release\Release_Daily\%YY%-%MM%-%DD%\Template2.0 /D:%MM%-%DD%-%YY% /y
rem 최종배포버전(지정날짜:월-일-년)
rem xcopy D:\Develop\Source(pbl)\*.pbl d:\Develop\Workspace\_Release\Source(pbl) /D:02-01-2009 /y
rem xcopy D:\Develop\Template2.0\*.pbl d:\Develop\Workspace\_Release\Template2.0 /D:02-01-2009 /y

pause
EXPLORER "D:\Develop\Workspace\_Release"



Posted by Julyus
Utility2009. 12. 16. 12:23
Posted by Julyus
2009. 9. 30. 17:33

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.