저는 Windows 스크립트를 처음 사용하고 다음과 같은 절대 경로를 가지고 있습니다. /bin/debug/test/abc.xyz.dll
파일 이름을 제거하고 다음과 같은 경로만 얻고 싶습니다 /bin/debug/test/
.
어떻게 해야 하나요?
답변1
이를 위해 루프 의 확장 기능을 사용할 수 있습니다 FOR
. "루프"가 아니더라도 다음과 같습니다.
@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA
여기서는 전체 파일 이름으로 이 스크립트를 호출하며, 내부 공백을 보호하기 위해 인용할 수도 있습니다.
편집하다:echo %%~nxA
분명히 잘못된 원래 코드를 사용했습니다 . 죄송합니다. 경로에서 파일 이름을 분리하고 파일 이름을 반환합니다. 위의 코드는 이제 드라이브 문자 없이 경로만 반환합니다.
편집2: 이것이 다음과 같이 축약될 수 있음을 지적한 @Karan에게 감사드립니다.
@echo off
setlocal EnableExtensions
echo %~p1
확장된 변수 확장 구문은 FOR
루프 뿐만 아니라인수 확장또한 (CALL /? 참조).