+ Добавлены макросы командной строки $CMD() и $XNT(opt). Макрос $CMD поз- воляет записать всю развернутую после обработки других макросов в фйл $TEMP\connect.cmd или при использовании макроса $XNT - в буфер в памя- ти. Используя программу Run.exe таким образом можно запускать кон- сольные программы с длинными командными строками. При этом вместо имени программы в строке Program path пишется имя программы Run с возможными опциями для перенаправления вывода запускаемой программы в файл и его последующей загрузки, а в строке Command line пишется имя запускаемой программы, ее параметры и макрос $CMD, например: Program path: run /a+$report $msg Command line: compiler32 $lPath$lName$lExt $Prompt(opt) $cmd При запуске так описанной программы сначала создастся файл со всеми указанными параметрами (именем текущего файла, введенными опциями, etc.), после чего будет запущена программа run как run /a+temp/connect.rep temp/connect.cmd Опция /a+ программы run означает, что надо перенаправить потоки stdout и stderror запускаемой программы в указанный файл, дописывая (опция '+' в его конец). Возможны также опции /o[+] и /e[+] для перенаправления соответственно только stdout и только stderror в указанные файлы. '+' служит для указания писать в конец имеющегося. Это нужно для работы имеющегося в connect механизма перехода на определенную специальным фильтром строку файла, содержащую ошибку компиляции, фильры для работы этого механизма пишутся до запуска программы в файл connect.rep. Макрос $XNT(opt) при работе под NT позволяет делать тоже самое, что и программа run, но средствами функции ExecNT, встроенной в cn_nt.dll. Для запуска программ с использованием этой возможности вместо run надо использовать $XNT: Program path: $xnt $report $msg Command line: compiler32 $lPath$lName$lExt $Prompt(opt) $cmd Необязательный параметр $xnt(opt) позволяет управлять флагами запуска (подробности в документации на функцию CreateProcess). Два младших бита используются для игнорирования ошибок запуска внутри функции (позволя- ет дождаться завершения запущенной программы и перехватить ее вывод даже тогда, когда функция CreateProcess возвращает ошибку) - бит 1, и всегда возвращать в connect результат успешного запуска (0) - бит 2. Таким образом $xnt(3) - наиболее универсальный способ, хоть и не пока- зывающий результата запуска. Так в обновленном файле connect.asp теперь win32 архиваторы запускаются с использованием механизма $xnt что позволяет пользоваться архиваторами и при длинных путях и именах файлов без опасений превышения 128байтной досовской командной строки. Под Windows 9x нужно вместо xnt использо- вать run. 16-12-05г. 22:41:32 (connect.exe 1787503 15-12-05 11:13)