Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запуск внешнего приложения


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 ты ищешь не там (не в той директории) где он реально создан при этом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо