성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
[공진영] 안녕하세요 좋은글 감사합니다. 현재 제가 wpf로 관제 모...
[정성태] The Windows Registry Adventure #1: ...
[정성태] systemd for Developers I ; https:/...
[정성태] 엄밀히 object 타입의 인스턴스가 다른 타입으로 형변환 가능...
[정성태] 아래의 글에서 나오는 "Windows Application Pa...
[정성태] The history of calling conventions,...
[정성태] Secure and Deploy .NET Windows Form...
[정성태] Get Started with Milvus Vector DB i...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
닷넷
.NET 3.0
.NET 3.5
.NET 4.0
COM 개체 관련
Win32
Vista
Windows 7
Windows 8
Windows 서버
데이터베이스
웹폼 코딩 규약
윈폼 코딩 규약
공통 코딩 규약
명령행
레지스트리
기타
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>배치 파일에서 현재 디렉터리 알아내는 방법</div><br /> <br /> 개인적으로, 초기 프로젝트 구성에서 <a target='tab' href='https://www.sysnet.pe.kr/2/0/238'>배치 파일</a>을 즐겨 사용합니다. 일종의 프로토타입 식인데요. 프로젝트가 어느 수준까지 접어들기 전에는 변화가 많기 때문에 처음부터 MSBuild Task로 작업하기에는 너무 부담스러운 것이 사실입니다. 배치 파일을 이용하게 되면, 제법 자유롭게 빌드, 테스트 머신으로의 자동 배포, 설치 파일 패키징 등의 작업을 유연하게 바꿀 수 있는 장점이 있지요.<br /> <br /> 그중에서, 유용한 코드가 현재 디렉터리를 환경 변수에 설정하는 것입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Capturing the current directory from a batch file ; <a target='_tab' href='https://devblogs.microsoft.com/oldnewthing/20050128-00/?p=36573'>https://devblogs.microsoft.com/oldnewthing/20050128-00/?p=36573</a> </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > SET CURDIR=<b style='COLOR: blue'>%CD%</b> </pre> <br /> 이걸 사용하지 않으면 절대 경로를 설정하게 되고 향후의 유지 보수에 골치가 좀 아프지요.<br /> <br /> 그런데, 위와 같은 코드가 통하지 않는 경우가 있습니다. 바로 "Run as administrator"로 배치파일을 실행한 경우입니다. 이 때에는 cmd.exe가 위치한 %WINDIR%\system32 폴더가 %CURDIR% 변수에 매핑되게 됩니다.<br /> <br /> 물론, 이런 경우에 대한 해법도 있습니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > "run as administrator" changes default directory ; <a target='_tab' href='http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html'>http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html</a> </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > FOR /F %%I IN ("%0") DO SET CURRENTDIR=%%~dpI </pre> <br /> 그저 관용적으로 쓸 수 있으니 배치 파일에 위의 코드를 그냥 가져다 적용하시면 됩니다. 하드 코딩은 없으면 없을수록 좋은 것이니. ^^<br /> </div>
첨부파일
스팸 방지용 인증 번호
6416
(왼쪽의 숫자를 입력해야 합니다.)