Сценарий Ant для запуска командного файла при передаче пользовательского ввода в командный файл

1

Я пишу сценарий сборки, который предназначен для выполнения.bat файла, с пользователем, предоставляющим ввод, прежде чем нажимать enter, чтобы выполнить скрипт ant. Я уже использовал файл bat, и он работает хорошо, но я никогда не пытался интегрировать bat файл в скрипт сборки раньше, особенно тот, который требует ввода. Сценарий сборки без входного компонента должен выглядеть так, как я полагаю:

<target name="css-val">
    <exec dir="M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
        <arg line="/c cssvalFile.bat"/>
    </exec>
</target>

Файл bat, который требует ввода для запуска, выглядит следующим образом:

java -jar css-validator.jar -output gnu file:///%1 > ..\output\%2

Ввод 1 - это файл и каталог файла, который должен быть проверен css-validator.jar, а 2 - имя файла.

Как получить скрипт ant для ввода ввода в файл bat, который он выполняет, чтобы он работал почти так же, как кто-то сам выполнял файл bat? Я знаю, что первая часть пользовательского ввода для запуска всего этого будет "ant css-val", но потом я не знаю, как передать вход в файл bat.

Теги:
batch-file
cmd
ant
build.xml

2 ответа

2
Лучший ответ

Вы можете передавать параметры с -D переключателя -D:

-D<property>=<value>    Defines a property name-value pair on the command line.

и вы можете обратиться к этому параметру с помощью ${<property>}

Например:

<target name="css-val">
    <exec dir="M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
        <arg line="/c cssvalFile.bat ${file1} ${file2}"/>
    </exec>
</target>

и во время работы

ant -Dfile1=somefile -Dfile2=somefile build.xml

Надеюсь это поможет

  • 1
    это так, но, посмотрев далее на аргументы командной строки, я начинаю думать, что может быть лучше создать входные приглашения в задаче ant, а затем передать входные данные в файл bat. Тот факт, что у вас есть входные данные в строке arg, помог больше всего.
2

Хотя ответ Санджива - это то, что привело меня сюда из-за того, как он показал, что входные данные идут по той же линии, что и строка arg, я подумал, что было бы поучительно также включить альтернативный ответ, когда пользователю предлагается ввести входные данные (это также позволяет вводить данные валидация, функция, которую я покажу позже). Поскольку я уточняю сценарий сборки, я могу обновить этот код, а также показать другие полезные функции:

<target name="css-val">
    <input
        message="Please enter directory and filename of file to be validated:  "
        addproperty="validate.file"
    />
    <input
        message="Enter directory and file name to use for output report:  "
        addproperty="report.file"
    />
    <exec dir=""M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
        <arg line="/c cssValSoapFile.bat ${validate.file} ${report.file}"/>
    </exec>
</target>

Вышеупомянутое не будет работать, если в одном из аргументов есть пробелы, так как каждый аргумент разделяется пробелом. В этой ситуации используйте значение arg вместо строки arg. Больше писать, но он работает, когда есть пробелы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню