2009-11-03 2 views
0

Я пытаюсь вызвать объект ANT из контекстного меню файла Windows (щелкните правой кнопкой мыши).Передача пути к ANT из сценария BAT

Я установил записи в реестре, чтобы вызвать пакетный скрипт, который вызывает мою цель ANT EXEC.

Мне нужно передать путь к файлу (на который пользователь щелкнул правой кнопкой мыши) до моей цели ANT. Поэтому я использую% ~ DP1 установить муравей свойство в моем битом сценарии:

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

в результате:

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: \ Project \ Rel L \"

набор AntPath = "D:/Проект/Rel L /"

набор AntPath =» D: Project/Rel L/"

+0

набор AntPath =% AntPath: \ = /% сделал трюк ... –

2

Если вы работаете в Windows Ant, с радостью согласится с разделом каталога ОС, который является \. При просмотре вывода вашей программы я вижу, что отсутствуют разделители путей: у вас есть D:ProjectRel не D:\Project\Rel. Я могу только догадываться, что вы пытаетесь сделать exec a Cygwin. Программы Cygwin будут использовать \ в качестве escape-символа. Поэтому для настройки разделителей каталогов необходимо использовать свойство <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 Я обошел проходящий UNIX-путь, используя замену в пакетном файле. –

Смежные вопросы