이것은 매우 구체적인 질문입니다. 일괄 파일 문자열 조작
내가c:\data\src\branch_1
가 어떻게 배치 파일에서 c:\build\bin\branch_1
내 환경 변수 %buildpath%
을 설정하는 디렉토리에있는 \에서 실행하는 배치 파일을 말해봐?
당신은 당신의 드라이브와 경로를 얻기 위해 변수 %~dp0
을 환경을 사용할 수 있어야
이것은 매우 구체적인 질문입니다. 일괄 파일 문자열 조작
내가c:\data\src\branch_1
가 어떻게 배치 파일에서 c:\build\bin\branch_1
내 환경 변수 %buildpath%
을 설정하는 디렉토리에있는 \에서 실행하는 배치 파일을 말해봐?
당신은 당신의 드라이브와 경로를 얻기 위해 변수 %~dp0
을 환경을 사용할 수 있어야
(같은 배치 파일을 c:\foo\bar\branch_2
에있는 경우 나는 그것이 %buildpath%
c:\build\bin\branch_2
에 설정하려면, 추가 명확하게하기 위해) 현재 실행중인 배치 파일. 거기에서 문자로 문자의 끝을 벗기고 새로운 문자열을 만드는 것은 그리 효율적이지 않습니다. 예를 들어
, 배치 파일 :
Current directory is: C:\data\src\branch1\
New directory is: c:\build\bin\branch1
어떻게 작동하는지에 관해서는, 당신이 환경 변수의 문자열을 수행하기위한 !xyz:~n,m!
를 사용할 수 있습니다
@setlocal enableextensions enabledelayedexpansion
@echo off
set olddir=%~dp0
echo Current directory is: !olddir!
if "!olddir:~-1!" == "\" (
set olddir=!olddir:~0,-1!
)
set lastbit=
:loop
if not "!olddir:~-1!" == "\" (
set lastbit=!olddir:~-1!!lastbit!
set olddir=!olddir:~0,-1!
goto :loop
)
set newdir=c:\build\bin\!lastbit!
echo New directory is: !newdir!
endlocal
c:\data\src\branch1\qq.cmd
로 실행은 다음과 반환 , 음수는 m
또는 n
은 처음부터 끝까지 의미합니다. 따라서 첫 번째 if
블록은 후행 \
을 제거합니다.
루프는 비슷하지만 경로 끝의 문자를 \
을 찾을 때까지 새 변수로 전송합니다. 따라서 경로의 마지막 부분이 있습니다. 고정 된 새 경로에 추가하는 것은 간단합니다.
오래된 경우,하지만 여전히 ... 변수에 현재 디렉토리를 설정
쉬운 방법.
@echo off
cd > dir.tmp
set /p directory= <dir.tmp
echo %directory% <-- do whatever you want to the variable. I just did a echo..
del dir.tmp > nul
현재 디렉토리 만 필요하다면 디렉토리를 설정할 수 있습니다. % CD % 그러나 @ViktorSehr은 다음과 같이 요청했습니다. 배치 파일이 파일로 존재하는 디렉토리. –
니스, 이걸보고 % % ~ di % ~ pi : P – Leigh
% 0을 사용하고 있습니다. 고맙지 만, 그게 쉬운 부분이었습니다. 가장 어려운 부분은 거기에서 마지막 부분과 부분 문자열을 찾는 것입니다./ –
죄송합니다. @ 빅토르, 좀 더 자세히 읽어야합니다. – paxdiablo