[windows] Windows에서 배치 스크립트의 경로를 얻는 방법은 무엇입니까?

%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합니다.


답변

“\”뒤에 오는 경로를 얻기 위해 다음 스크립트를 사용할 수 있습니다

for %%i in ("%~dp0.") do SET "mypath=%%~fi"


답변

%~dp0상대 경로 일 수 있습니다. 전체 경로로 변환하려면 다음과 같이 해보십시오.

pushd %~dp0
set script_dir=%CD%
popd


답변

당신이 사용할 수있는 %~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%변수 일 것입니다.

@echo off
echo %CD%

%CD% 배치 스크립트가있는 현재 디렉토리를 반환합니다.


답변

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