У меня есть пакетный файл, который сначала создает другой пакетный файл, содержащий команду ClearCase cleartool, а затем запускает его:
ECHO cleartool lsactivity -long "%ACTIVITY%"^>"%OUTPUTFILE%">FILETORUN.bat
CALL FILETORUN.bat
При запуске пакета FILETORUN.bat
генерируется в правильном формате, но CALL
к нему полностью игнорируется.
Если я ECHO
вывожу после CALL
в файл журнала, я вижу, что скрипт просто пропускает его.
Что бы это могло быть?
Я попытался удалить CALL
, но это не имеет значения.
ИЗМЕНИТЬ: РЕШЕНИЕ
Спасибо всем за участие. Я нашел проблему. Перед записью в пакет и вызовом пакета в скрипте была команда чтения информации в переменную из файла:
SET /p FILETODELETE=<rmname_%CLEARCASE_USER%.tmp
Он читает только первую строку. По какой-то причине это создало конфликт с временным пакетным файлом, и я понятия не имею, почему. Я использовал другое решение для чтения первой строки из файла, и конфликт больше не возникает:
(set FILETODELETE=)
for /f "delims=" %%q in (rmname_%CLEARCASE_USER%.tmp) do if not defined FILETODELETE set FILETODELETE=%%q
Если кто-то может пролить свет, было бы здорово!
CALL "%OUTPUTFILE%\FILETORUN.bat"
? - person Nate Hekman   schedule 26.02.2013cleartool lsactivity
возвращает только ошибку (что будет, если вы не находитесь в поле зрения), которая не будет перенаправлена в выходной файл? Вы можете попробовать перенаправить stderr в файл (добавьте2>&1
в ваш сгенерированный пакетный файл, который также будет перенаправлять ошибки — вам нужно экранировать>
) и посмотреть, даст ли это вам какие-либо подсказки. - person icabod   schedule 26.02.2013ECHO ECHO TEST^>TEST.TXT>TEST.BAT
, за которой следуетCALL TEST.BAT
, и это работает. Странно то, что пакетcleartool
выше работает с операцией возврата ClearCase, но не с операцией удаления ClearCase (скрипты являются триггерами). Единственная разница в том, что в последнем случае другой скрипт выполняется непосредственно перед тем, который вызывает cleartool. Есть ли способ правильно выйти из этой первой партии? В настоящее время я используюEXIT /B
в качестве последней строки. - person Andrew   schedule 26.02.2013cleartool lsactivity -long
вне контекста представления возвращает основную информацию об активности, такую как заголовок, владелец или поток без набора изменений, и это все, что мне нужно. Как я сказал Нейту, пакет отлично работает с операциями возврата ClearCase, но не с операциями удаления. Кроме того, как только bat-файл сгенерирован (а не запущен), я могу просто дважды щелкнуть его в проводнике Windows, и он сгенерирует нужный мне файл. Очень странное поведение! - person Andrew   schedule 26.02.2013CALL <previousbat>.bat
, и это работает. Сценарий, похоже, не хочет запускать его, как только он будет сгенерирован. - person Andrew   schedule 26.02.2013cleartool etc
в пакетный файл и запускать пакетный файл? Не могли бы вы просто запустить cleartool напрямую? - person Nate Hekman   schedule 26.02.2013ECHO pause>>FILETORUN.bat
, чтобы увидеть, появляются ли какие-либо сообщения об ошибках? - person AjV Jsy   schedule 26.02.2013SET /p FILETODELETE=<rmname_%CLEARCASE_USER%.tmp
. Он читает только первую строку. По какой-то причине это создало конфликт с временным пакетным файлом, и я понятия не имею, почему. Я использовал другое решение для чтения первой строки из файла, и теперь все работает. Если кто-то может пролить свет, было бы здорово! - person Andrew   schedule 27.02.2013