검색결과 리스트
배치파일에 해당되는 글 1건
- 2013.07.08 윈도우 배치파일 문법 정리
글
윈도우 배치파일 문법 정리
%CD%를 하면 현재 작업 경로를 얻을 수 있다.
@REM 현재 경로 저장
SET CurrentPath=%CD%
@REM 경로 이동
CD D:\DEV\Server
...코드
@REM 이전 경로로 복귀
CD %CurrentPath%
- 파일 복사
COPY
- 파일 이름을 변경한다.
RENAME [드라이브:][경로]파일이름1 파일이름2.
REN [드라이브:][경로]파일이름1 파일이름2.
서버 재시작시에 기존 기존 로그를 분리하는 등의 용도로 사용 가능
예)
REN LoginError.log %date%_%time:~0,2%_%time:~3,2%_%time:~6,2%_LoginError.log
exit /b 0
배치파일을 만들면서 느낀 팁만 남기도록 한다.
어차피 배치파일 명령어 사용법은 /? 키워드를 사용하여 주석을 확인하는게 가장 정확하고 배치파일을 처음 접할 때 한가지만
잊지 않으면 배치파일 명령어는 간단하다. 바로 우리가 파일로 작성한 배치파일은 단순한 cmd.exe 에서 파일을 읽어 명령어를 사용한다는 사실이다.
한 예로
@echo off
svn update . // 설정파일이 포함된 폴더의 svn을 업데이트하고
copy /Y Event.ini .. // 한단계 위로 파일 복사
copy /Y DurationEvent.ini ..
pause
배치 파일을 클릭해서 실행 시키면 해당 설정 폴더를 svn 업데이트하고 상위 폴더에 설정 설정파일들을 복사하는 배치 파일이 있다고하자.
d:\server\public\배치파일
서비스 중에 이벤트 정보를 변경할 필요가 생겼을 때 모든 서버마다 수작업으로 해당 배치파일을 클릭해서 실행 시켜야한다면 매우 비효율 적이기 때문에 마스터서버에서 특정 명령어를 보내면 게임서버가 해당 배치파일을 실행 시키는 명령어를 만들었다고 치자.
명령어를 받은 게임 서버는
::ShellExecute 등의 함수를 사용하여 배치파일을 실행 시키는데
이렇게되면 d:\server\.. 게임 서버의 모든 데이터가 update되고
d:\server\Event.ini 파일이 -> d:\Event.ini 복사된다.
위와 같은 결과는 cmd.exe 에서 실행되는 과정을 보면 당연하다고 볼 수 있다.
서버파일이 존재하고 있는 경로 D:\Server\.. 에서 배치파일이 실행되었기 때문에 svn 업데이트 명령이나 파일 복사도 우리가 의도하지 않는 결과를 만들었다.
그러면 어떻게 해결할 수 있을까?
위에서 이야기한 배치파일은 단순히 cmd.exe 에서 읽어들이는 명령어라고 생각하면 간단하다.
@echo off
cd public // d:\server\public\.. 경로 이동..
svn update . // d:\server\public\.. 원하는 폴더만 업데이트
copy /Y Event.ini .. // 업데이트된 파일 상위로 복사
copy /Y DurationEvent.ini ..
pause
배치파일을 작성할 때는 항상 도스창에서 실행되는 명령어를 작성한다고 생각하면 의외로 단순하다는 사실을 잊지 말자.
웹서버 리스타트 배치 명령어
@echo off
@REM appcmd.exe 폴더로 경로 이동
cd %windir%\system32\inetsrv
@REM 사이트 종료
appcmd stop site /site.name:"사이트명"
@REM 응용 프로그램 풀 종료
appcmd stop apppool /apppool.name:"풀명"
@REM 퍼포스 업데이트
@REM appcmd.exe 폴더로 경로 이동
cd %windir%\system32\inetsrv
@REM 사이트 시작
appcmd start site /site.name:"사이트명"
@REM 응용 프로그램 풀 종료
appcmd start apppool /apppool.name:"풀명"
RECENT COMMENT