2009-11-03 2 views
0

Windows (오른쪽 클릭) 파일 컨텍스트 메뉴에서 ANT 대상을 호출하려고합니다.BAT 스크립트에서 ANT로 파일 경로 전달

내 ANT EXEC 대상을 호출하는 배치 스크립트를 호출하도록 레지스트리 항목을 설정했습니다.

마우스 오른쪽 버튼으로 클릭 한 파일의 경로를 내 ANT 대상에 전달해야합니다.

Set tobeusedfilepath=%~dp1 
Set tobeusedfile=%~n1 

을 결과 : 그래서 ~ DP1 내 방망이 스크립트에서 ANT 속성을 설정 %를 사용하고

tobeusedfilepath=D:\Project\Rel L\ 
tobeusedfile=file 

문제 것은 % ~ DP1 파일 구분자로 "\"문자열을 반환 . 그러나 ANT EXEC 작업에서 "/"를 원합니다.

[exec] '-source' 
[exec] 'D:ProjectRel L/file' 
[exec] ...... 
[exec] The file, 'D:ProjectRel L/file', does not exist. 

이 경로 구분 기호를 해결하는 방법은 무엇입니까?

답변

3
set AntPath="D:\Project\Rel L\" 
set AntPath=%AntPath:\=/% 
set AntPath=%AntPath::/=:% 

세트 AntPath 제공 = "D : \ 프로젝트 \ REL L \"

세트 AntPath = "D/프로젝트/REL L /"

세트 AntPath = " D : Project/Rel L/"

+0

세트 AntPath = % AntPath : \ =/% 속임수를 썼는지 ... –

2

Windows Ant에서 실행중인 경우 OS 디렉토리 구분 기호 \을 기꺼이 받아들입니다. 프로그램의 출력을 조사한 결과 경로 구분 기호가 누락되었습니다. D:ProjectRel이 아니고 D:\Project\Rel입니다. 나는 당신이 execCygwin 프로그램을 시도하고 있다고 추측 할 수 있습니다. Cygwin 프로그램은 \을 이스케이프 문자로 사용합니다. 따라서 디렉터리 구분 기호를 조정하려면 <pathconvert> 속성을 사용해야합니다. 아래

코드 조각이

<property name="tobeusedfilepath" location="D:\Project\Rel L\"/> 
<property name="tobeusedfile" value="file"/> 

<property name="system-path-filename" 
    location="${tobeusedfilepath}/${tobeusedfile}" 
/> 

<pathconvert property="unixized-filename" targetos="unix"> 
    <path location="${system-path-filename}"/> 
</pathconvert> 

<echo message="system-path-filename=${system-path-filename}"/> 
<echo message="unixized-filename=${unixized-filename}"/> 

작업을 수행하는 방법을 보여줍니다 그리고 여기이 실행의 출력 :

[echo] system-path-filename=D:\Project\Rel L\file 
[echo] unixized-filename=D:/Project/Rel L/file 
+0

예, Java를 실행하여 WebLogic 배포자를 실행하려고합니다. 배치 파일에서 replace를 사용하여 UNIX 기반 경로를 전달했습니다. –

관련 문제