Команда поиска Clearcase в сочетании с Tcl Script и Batch-File: перенаправление не работает - PullRequest
1 голос
/ 01 августа 2011

это снова я; -)

Я пытаюсь запустить команду findtool find из командного файла. Этот пакетный файл получает свои аргументы из сценария Tcl.

Пакетный файл:

 SET VERARG="version(\main\LATEST) && !lbtype(%3)"
 cleartool find . -version %VERARG% -print > Y:\x\Logs\%3.log

Tcl Скрипт:

 set v_cmd "y:\\x\\clearcase_find_change.cmd $v_drive $v_path $v_label \n"
 set v_outp [exec cmd << $v_cmd]

Когда я запускаю командный файл из командной строки, он работает и записывает обращения в файл журнала, но когда я запускаю его из Tcl, я вижу обращения в командном окне, но он только создает журнал. файлы без содержания. Я уже тестировал его с очень простым пакетным файлом, который содержит только команду echo и перенаправление. Это сработало, я также пытался использовать разные диски, но безуспешно. Я также проверил полученные аргументы командного файла, но все выглядело хорошо для меня.

Простой звонок, который сработал:

Batch: echo %1 > Y:\x\%2.log
Tcl: set v_cmd "y:\\x\\simple_echo.cmd $v_lib $v_label \n"

1 Ответ

1 голос
/ 01 августа 2011

Возможно, отсутствует директива cmd, указывающая, что сеанс DOS должен выполнить , а затем завершить :

set v_outp [exec cmd << $v_cmd /c]

или

set v_outp [exec cmd /c << $v_cmd]

или

set v_cmd "/c y:\\x\\clearcase_find_change.cmd $v_drive $v_path $v_label \n"
set v_outp [exec cmd << $v_cmd]

(чтобы убедиться, что /c передан первым)

См. FAQ по Tcl / Tk :

exec cmd.exe >&@stdout <@stdin /c dir      

выполнит команду directory для текущего каталога.
Проверьте справку Windows для переключателей, доступных под cmd.exe.
«/c» говорит ему выполнить команду и затем выйти. «/k» говорит ему выполнить команду и сохранить активный интерпретатор команд DOS.
(Обратите внимание, что cmd.exe - это имя интерпретатора MS-DOS в Windows NT.)

...