2014-10-21 2 views
1

일괄 처리 스크립트를 작성 중이며 전체 경로 문자열에서 최하위 수준의 디렉토리를 제거하는 방법이 필요합니다. 그래서 예를 들어, 내가있는 경우 :일괄 처리 스크립트에서 문자열의 마지막 토큰 가져 오기

C를 : ". dir3를"/ DIR1/DIR2/dir3

내가 돌아 내 배치 스크립트를 싶습니다

이 문자열 C :/dir1/dir2/dir3은 사용자가 전달하고 "FullPath"변수로 설정됩니다.

비슷한 문제인 것처럼 보인 대답 here을 살펴 보았지만 그 해결책은 구분 기호를 사용하지 않았습니다. 그리고, 내가 이것을 해결하는 가까이서 보는이 코드입니다 :

for /f "tokens=(some number) delims=\" %%a in ("%FullPath%") do echo Token=%%a 

...이 내가 결국 변수에이 토큰을 설정합니다 (지정한 토큰을 에코 할 수 있습니다,하지만 난을 얻을 필요 오른쪽 첫 번째)하지만, 나는 거기에 얼마나 많은 토큰이 있을지 모르겠다. 그리고 나는 항상 "\"문자를 따라 문자열의 마지막 문자를 원한다.

이 코드 줄을 편집하여 문자열의 마지막 토큰을 반환하려면 어떻게해야합니까? 이다

답변

4
for %%a in ("%fullpath%\.") do set "lastPart=%%~nxa" 

은 전체 경로에 대한 참조를 얻기 위해 for 루프를 사용하고 여기에서 이름 난이 방법으로 해결

0

마지막 요소의 확장 검색 :

for %%x in (%fullpath:\= %) do set last=%%x 

이것은 마지막 답변과 동일한 로직을 사용하지만 표준 for 루프는 구분 기호를 \에서 %var:=% 구문으로 공백으로 변경합니다. for /f "delims=\"의 효과를 얻으려면 대신 을 루프로 사용하지 않는 for /f 대신에 트릭을 사용해야합니다.

관련 문제