2009-01-18 3 views
8

현재 변수를 배치로 가져 와서 파일 이름 만 구문 분석하는 방법을 찾고 있습니다.일괄 처리 : 경로 및 파일 이름이있는 변수에서 파일 이름 만 읽음

예를 들어, 배치 파일을 다른 응용 프로그램의 -s 매개 변수에 전달합니다.이 매개 변수는 이후에 내 소스 변수로 설정됩니다. 소스 파일 변수는 일반적으로 C : \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext와 같은 것을 포함합니다.

첫 번째 "\"까지 변수의 끝에서 읽은 다음 결과를 새로운 변수 파일 이름으로 설정한다고 가정하지만 "for/f"명령을 성공적으로 사용할 수 없었습니다.

도움이 될 것입니다.

업데이트 : 표준 XP 또는 Windows 2000/2003 만 사용 가능합니다 (리소스 키트가 설치되어 있다고 가정 할 수 없음). N은 인덱스가

set FILENAME=%~nxN 

이다 : 그것 등 IE의 스크립트에 인수 % 1, % 2로 들어오는 경우

답변

9

,이 같은 변수에 바로 파일 이름과 확장자를 추출 할 수 있습니다 인수의. 하지 않습니다,

set FILENAME="%~nx1" 

여분의 괄호 보장 것이다 특수 문자 등 '&'로 :

@echo off 
set FILENAME=%~nx1 
echo %FILENAME% 
+0

감사합니다. 도움말을 다시 읽었으며 % ~ nxI 지침을 복잡하게 작성했습니다. 감사!!!! – Michael

+0

예. 그 지시 사항은 운이 좋으면 찾아 내기조차해도 대단히 짜증납니다. –

+0

+1이 곧 물어 보려고했는데, 그래서 중복 된 질문 감지기가 있습니다 :-) –

2

약간 개선 된 버전 : 예를 들어,이 스크립트는 첫 번째 인수의 단지 파일 이름을 메아리 배치 실행 중에 방해가된다.