%0
배치 스크립트의 전체 경로 가 포함되어 있음을 알고 있습니다.c:\path\to\my\file\abc.bat
나는 path
같을 것이다c:\path\to\my\file
어떻게하면 될까요?
%0
배치 스크립트의 전체 경로 가 포함되어 있음을 알고 있습니다.c:\path\to\my\file\abc.bat
나는 path
같을 것이다c:\path\to\my\file
어떻게하면 될까요?
답변:
%~dp0
디렉토리가 될 것입니다. 다음은 모든 경로 수정 자에 대한 설명서입니다 . 재미있는 것들 :-)
최종 백 슬래시를 제거하려면 :n,m
다음과 같이 하위 문자열 구문을 사용할 수 있습니다 .
SET mypath=%~dp0
echo %mypath:~0,-1%
불행히도 %0
구문과 구문 을 결합하는 방법이 없다고 생각 :~n,m
합니다.
%~0\..
하고 있습니다. 더 나은 방법이 있어야한다는 것을 알고있었습니다! 또한 디렉토리 이름 등에 공백이있는 경우 %~dp0
큰 따옴표 ( ""
)로 묶어야합니다 .
%~dp0
끝에``가 포함되어 있습니다. 그것을 제거하는 방법에 대한 아이디어가 있습니까?
SET msg=hello world
잘 작동합니다). 그러나 다른 곳에서 % mypath %를 사용하는 경우 따옴표로 사용하지 않으려는 경우에도주의해야 cd
합니다.
"\"뒤에 오는 경로를 얻기 위해 다음 스크립트를 사용할 수 있습니다
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
상대 경로 일 수 있습니다. 전체 경로로 변환하려면 다음과 같이 해보십시오.
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
직접 사용하지 않습니까?
%~dp0
. 사용 사례에 따라 문제가 될 수도 있고 그렇지 않을 수도 있습니다.
%~dp0
상대 경로를 포함 할 수없고, d
드라이브와 경로를 나타내며 p
, 드라이브가 상대적인 방법은 무엇입니까?
%~dp0
했으며 스크립트가 상대 경로로 실행 된 경우에도 절대 경로가 될 것입니다. jeb의 의견 덕분에 나는이 대답에 속지 않았습니다. 사람들은 왜 물건을 만들어 가서 그들의 상상력을 다른 사람들에게 전하기 시작합니까? 나는이 일을하는이 동료를 가지고 있지만 나는 그의 (젊은) 나이를 비난했다. 다운 투표가 중요합니다.
당신이 사용할 수있는 %~dp0
, D 수단 드라이브 만 P 수단의 경로는, 0은 배치 파일의 전체 파일 이름에 대한 인수입니다.
예를 들어 파일 경로가 C : \ Users \ Oliver \ Desktop \ example.bat 인 경우 인수는 C : \ Users \ Oliver \ Desktop \과 같습니다. 또한 명령 set cpath=%~dp0 && set cpath=%cpath:~0,-1%
을 사용하고 %cpath%
변수를 사용 하여 후행 슬래시를 제거 할 수 있습니다 .
%cd%
스크립트가 실행되는 디렉토리의 경로를 제공합니다.
그냥 실행 :
echo %cd%
%CD%
배치 파일이 저장된 폴더가 아닌 현재 작업 폴더입니다. 그들은 같은 위치 일 수 있지만 종종 그렇지 않습니다.
그것은 %CD%
변수 일 것입니다.
@echo off
echo %CD%
%CD%
배치 스크립트가있는 현재 디렉토리를 반환합니다.
CD C:\Temp <CR> ECHO %CD%
( <CR>
줄 바꿈입니다 ...)
Windows 7 컴퓨터에서 작업 중이며 아래 줄을 사용하여 bash 스크립트의 절대 폴더 경로를 얻었습니다.
http://www.linuxjournal.com/content/bash-parameter-expansion 을 보고이 솔루션에 도달했습니다 .
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder