Microsoft MVP성태의 닷넷 이야기
명령행 : 6. 배치 파일에서 현재 디렉터리 알아내는 방법 [링크 복사], [링크+제목 복사]
조회: 22822
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
배치 파일에서 현재 디렉터리 알아내는 방법


개인적으로, 초기 프로젝트 구성에서 배치 파일을 즐겨 사용합니다. 일종의 프로토타입 식인데요. 프로젝트가 어느 수준까지 접어들기 전에는 변화가 많기 때문에 처음부터 MSBuild Task로 작업하기에는 너무 부담스러운 것이 사실입니다. 배치 파일을 이용하게 되면, 제법 자유롭게 빌드, 테스트 머신으로의 자동 배포, 설치 파일 패키징 등의 작업을 유연하게 바꿀 수 있는 장점이 있지요.

그중에서, 유용한 코드가 현재 디렉터리를 환경 변수에 설정하는 것입니다.

Capturing the current directory from a batch file
; https://devblogs.microsoft.com/oldnewthing/20050128-00/?p=36573

SET CURDIR=%CD%

이걸 사용하지 않으면 절대 경로를 설정하게 되고 향후의 유지 보수에 골치가 좀 아프지요.

그런데, 위와 같은 코드가 통하지 않는 경우가 있습니다. 바로 "Run as administrator"로 배치파일을 실행한 경우입니다. 이 때에는 cmd.exe가 위치한 %WINDIR%\system32 폴더가 %CURDIR% 변수에 매핑되게 됩니다.

물론, 이런 경우에 대한 해법도 있습니다. ^^

"run as administrator" changes default directory 
; http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html

FOR /F %%I IN ("%0") DO SET CURRENTDIR=%%~dpI

그저 관용적으로 쓸 수 있으니 배치 파일에 위의 코드를 그냥 가져다 적용하시면 됩니다. 하드 코딩은 없으면 없을수록 좋은 것이니. ^^

[연관 글]






[최초 등록일: ]
[최종 수정일: 1/18/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

비밀번호

댓글 작성자
 



2020-10-15 08시18분
dos command to sperate file name and extension into variables
; https://stackoverflow.com/questions/8749637/dos-command-to-sperate-file-name-and-extension-into-variables/8749894

--------------------------
REM test.bat

@echo off

echo "%%~1" %~1
echo "%%~f1" %~f1
echo "%%~d1" %~d1
echo "%%~p1" %~p1
echo "%%~n1" %~n1
echo "%%~x1" %~x1
echo "%%~s1" %~s1
echo "%%~a1" %~a1
echo "%%~t1" %~t1
echo "%%~z1" %~z1
      
echo "%%~dp1" %~dp1
echo "%%~nx1" %~nx1

--------------------------

C:\temp\batch_filename_ext> test.bat test.txt
"%~1" test.txt
"%~f1" C:\temp\batch_filename_ext\test.txt
"%~d1" C:
"%~p1" \temp\batch_filename_ext\
"%~n1" test
"%~x1" .txt
"%~s1" C:\temp\batch_filename_ext\test.txt
"%~a1" --a--------
"%~t1" 2020-10-15 오전 09:16
"%~z1" 7
"%~dp1" C:\temp\batch_filename_ext\
"%~nx1" test.txt
정성태

1  2  3  4  5  [6]  7  8 
NoWriterDateCnt.TitleFile(s)
69정성태10/27/20064548.NET : 1. Typed DataSet 에서의 ExcludeSchema 사용
68정성태1/27/20075050Vista : 2. Elevate through ShellExecute
67정성태10/22/20064236Vista : 1. Programmatically determine if an application requires elevation
66정성태9/22/20064158Tip/Trick: UpdateProgress Control and AJAX Activity Image Animations
65정성태9/15/20069443Tip/Trick: Enabling Back/Forward-Button Support for ASP.NET AJAX UpdatePanel
64정성태2/23/20074366Why are NameValueCollection lookups slower than Hashtable? [Kim Hamilton]
63정성태8/30/20064258WinFormResizer for .NET 2.0, v.2.0.0020.3 Released!
62정성태8/21/20064062Stylistic differences in using
61정성태8/5/20064250Detecting Information Card Support (CardSpace!) in a browser
60정성태7/22/20064020JonGallant WebControls v1.0 - ScrollableContainer
59정성태3/2/20065311.NET이 왜 성공할 수밖에 없는가?
58정성태10/5/20055111한국 MSDN - 홈지기가 번역한 MSDN Magazine 자료
57정성태5/5/20054518구구단 프로그램을 제외하고, 벤더종속적이지 않은 프로그래밍 언어가 있나요?
53정성태3/4/20055839[마소 연재 기사: 2004-05] 특집 X-Inernet : 닷넷 스마트 클라이언트 [4]파일 다운로드1
52정성태3/4/20056084[마소 연재 기사: 2004-04] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 3파일 다운로드1
51정성태3/4/20056418[마소 연재 기사: 2004-03] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 2파일 다운로드1
55정성태3/30/20054868    답변글 [추가] 기본 보안만으로 구현하는 스마트 클라이언트 이벤트 구현
50정성태3/4/20058468[마소 연재 기사: 2004-02] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 1 [3]파일 다운로드1
49정성태9/7/20067681RSA 공개키/개인키 암호화, DES 암호화, MD5 단방향 해시 암호화 클래스 (C#) 2002.09.25파일 다운로드1
48정성태7/17/20035608C# 으로 만든 Base64 인코딩/디코딩 클래스 (C#) 2002.09.24파일 다운로드1
47정성태7/17/20034557C# 으로 만든 DLL 을 Managed C++ 에서 이용하는 예제 (C#, Managed C++) 2002.08.01파일 다운로드1
46정성태7/17/20034705.NET으로 만든 COM+ 객체를 HTML에서 사용 (C#, COM+) 2002.06.10파일 다운로드1
45정성태7/17/20034867COM+ 객체 원격 접근예제 (VC 6.0, ATL, COM+) 2002.05.31파일 다운로드1
44정성태7/17/20034805Win32 API Hook (VC 6.0, ATL) 2002.05.12파일 다운로드1
54정성태3/21/20054343    답변글 [추가]: 최근 나온 소개된 관련 기사파일 다운로드2
43정성태7/17/20035761탐색기 Namespace Extension 컨테이너 (VC 6.0, ATL) 2002.03.24파일 다운로드1
1  2  3  4  5  [6]  7  8