![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск внешнего приложения
Alex_1qaz_2006 © (2006-06-23 11:52:00)Здравствуйте мастера!
Есть проблемка. Необходимо запустить внешнюю программу с передачей параметров через командную строку и перенаправить вывод программы в файл.
Пробовал через WinExec. Запуск происходит с передачей параметров - все нормально. Но перенаправление вывода в файл не происходит.
Пожалуйста подскажите как это можно сделать.
Приблизительные строки кода:
Var
rc : integer;
begin
rc:=WinExec('rar.exe a -r arcname d:\ >arcname.lst', ...);
Leonid Troyanovsky (2006-06-23 17:56:00) [1]
> Alex_1qaz_2006 (23.06.06 13:50) [12]
> Стандартный метод перенаправления потока еще со времен DOS'а
> был таким
> (командная строка)
> >Программа.exe [список параметров] > имя_файла_куда_перенаправить_вывод;
Еще раз, медленно.
Со времен доса этим занимался интерпретатор комстроки,
например, command.com.
Т.е., пускать надо
cmd /c "Программа.exe" > "имя_файла_куда_перенаправить_вывод"
--
Regards, LVT.
Alex_1qaz_2006 (2006-06-23 13:50:00) [2]Перенаправлением потока вывода занимяюсь я.
Стандартный метод перенаправления потока еще со времен DOS'а был таким
(командная строка)
>Программа.exe [список параметров] > имя_файла_куда_перенаправить_вывод;
знак > и есть указание для перенаправления
Этот метод поддерживается всеми версиями DOS' а и Windows'а.
То есть, если у любой программы есть вывод на стандартный выходной поток, то его можно перенаправить.
В этой командной строке есть знак перенаправления вывода - ' >'.
c:\Program Files\WinRAR\rar.exe a -r -rr5p -idp -m0 e:\Dir1\File1 z:\ >e:\Dir1\File1.lst'
И именно это перенаправление не отрабатывает при выполнении командной строки через WinExec.
Сергей М. (2006-06-23 13:36:00) [3]
> Gero © (23.06.06 13:16) [10]
> Перенаправлением занимаешься ты или WinRar?
[Win]Rar не занимается перенаправлением.
">" - это "фича" процессора консольных команд.
Gero (2006-06-23 13:16:00) [4]> [9] Alex_1qaz_2006 (23.06.06 13:07)
Перенаправлением занимаешься ты или WinRar? Если второе, то проблема именно в передаче параметров.
Alex_1qaz_2006 (2006-06-23 13:07:00) [5]Проблема не в правильности передаваемых внешней программе параметров, а в перенаправлении выводапри запуске через WinExe !!!
Сергей М. (2006-06-23 12:46:00) [6]пробуй ShellExecute() (вместо WinExec)
Gero (2006-06-23 12:44:00) [7]> Правильность строки, путей имен файлов проверена.
Возможно, недостаточно проверена.
Alex_1qaz_2006 (2006-06-23 12:41:00) [8]Строка сложная и формируется программно. Весь код приводить это много.
В итоге получается строка такого вида:
Это непосредственно перед выполнением.
'c:\Program Files\WinRAR\rar.exe a -r -rr5p -idp -m0 e:\Dir1\File1 z:\ > e:\Dir1\File1.lst'
Правильность строки, путей имен файлов проверена. Эта строка в запуске из командной строки полностью отрабатывает с перенаправлением. А из WinExec нет.
Сергей М. (2006-06-23 12:21:00) [9]
> поиск не нужен, так как указан точный путь и имя файла
Судя по "Приблизительные строки кода" точный путь как раз отсутствует.
Приведи реальную ком.строку...
Alex_1qaz_2006 (2006-06-23 12:15:00) [10]Да, именно так. Да сам поиск не нужен, так как указан точный путь и имя файла.
Но все равно на всякий случай поискал - нет.
Сергей М. (2006-06-23 12:08:00) [11]Хочешь сказать что после выполнения этой WinExec() сквознойпоиск интересующего файла по всемтомам не приводит к успеху ?
Alex_1qaz_2006 (2006-06-23 12:05:00) [12]В строках кода однозначно задается путь и имя файла перенаправления.
Сергей М. (2006-06-23 11:57:00) [13]
> перенаправление вывода в файл не происходит
Происходит.
Но скорей всего файл arcname.lst ты ищешь не там (не в той директории) где он реально создан при этом.