У меня есть скрипт NAnt, который в рамках своего проекта вызывает командный файл, используя следующую задачу:
<target name="makeplane">
<exec program="C:\WINDOWS\system32\CMD.EXE"
commandline="/C ${make.file} > ${make.log}"
verbose="false"
workingdir="${make.dir}"
basedir="${make.dir}">
</exec>
<delete>
<fileset basedir="c:\">
<include name="program" />
</fileset>
</delete>
</target>
К сожалению, я не могу контролировать содержимое командного файла, и он выбрасывает много мусора на экран, который бесполезен в журнале. Поэтому, чтобы обойти это, я перенаправляю вывод из файла bat в текстовый файл, используя
> ${make.log}
часть, которая соответствует "> log.txt".
Это перенаправление, кажется, создает файл с именем "program" на диске C и портит все виды сервисов, а Windows, как правило, это не нравится. Чтобы обойти это, я вручную удаляю этот файл после запуска файла bat.
Проблема в том, что теперь мне нужно полностью выполнить аналогичную задачу для другого проекта, и если они выполняются одновременно, то первый заблокирует файл с именем «program», а второй завершится ошибкой. Не совсем хорошая ситуация для непрерывной интеграции.
Я искал в сети, но так как файл называется программой, я получаю всевозможные результаты мусора. Кто-нибудь получил какие-либо идеи обойти. Я пробовал выходной параметр в задаче exec, но проблема остается той же.