Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 13
1

Shell - выполнение внешних программ

20.01.2010, 11:00. Показов 2434. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день всем!
Есть проблема: раньше по ночам я архивировал некоторый объем данных RAR-ом через командную строку типа c:winrar
ar.exe 'параметры' >> c:1.txt, то есть результат выполнения сбрасывал в лог. Сейчас пишу программу автоматизации бэкапа по причине того, что через командную строку DOS невозможно задать в имя файла автоматом текущую дату. (т.е. чтобы сегодня файл именовался 13.11.2003.rar, вчерашний 12.11.2003.rar и т.д.) Сделал через Shell - все замечательно, только вывод в файл через перенаправление >> c:1.txt не работает. Shell интерпритирует эту последовательность символов, как имя файла. Как сделать? Или же есть еще какие-либо альтернативы Shell, которые позволяли бы делать такую вещь (желательно с описанием). Уж больно мне логи ночные нужны.

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2010, 11:00
Ответы с готовыми решениями:

Многоразовое выполнение внешних скриптов
Есть 2 внешних php скрипта. В них есть повторяющиеся элементы: инклудятся одни и теже библиотеки,...

Запуск внешних программ
Передо мной стоит задача: считывать данные из текстового файла построчно. В строках содержаться...

Запуск внешних программ
uses dos {$M 2048,0,0} begin swapvectors; exec(GetEnv('COMSPEC'),'/C batnik.bat'); ...

Открытие внешних программ
Здравствуйте, проблемма такая, с помощью функцииRunProgram пытаюся открыть программу, а он...

11
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
20.01.2010, 11:14 2
Я тоже пытался перенаправлять в файл... результаты компилятора.
И тоже не получилось.

Я бы посоветовал использовать ZIP, прямо из кода. Благо для этого в Сети куча примеров. Ну а если достанете доку как юзать RAR через свою прогу киньте плз сюда.
0
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 13
20.01.2010, 11:21  [ТС] 3
Нет, ЗИП не пойдет. В принципе RAR (т.е. коммандная утилита WINRAR'a) позволяет вести логи - это параметр -ilog[имя лог-файла] (между ilog и именем файла не должно быть пробела). Туда он сваливает ошибки при выполнении RAR'ом действий. Работает эта опция только в регистрированной версии RAR. Меня этот вопрос волнует более глобально. Например результат xcopy 'откуда' 'куда' перенаправить в лог, дабы увидеть, дошел файл до адресата, или, например, девайс типа ЗИПа не было готово.
0
Messir
20.01.2010, 17:41 4
можно перехватить поток ввода-вывода и направить его из консоли в, например, текстовое поле программы...
Comanche
20.01.2010, 23:19 5
2Messir:
Совершенно верно. Для этих целей нужно использовать 'анонимные конвейеры' ('anonymous pipes').

Поищите в Сети на CreatePipe (API).

Я как-то делал таким образом отображение запущенных ДОС-сессий... в текст-боксе своей формы - т.е. вообще без 'чёрного окна'. Понятно, что этим достигается полный контроль за IO-потоком. Правда, у меня был при этом сильный гемморой с I-потоком (ожидание user input и т.д.), но помог, как всегда, MSDN )

Ну и как вариант - запишите ваш вызов RAR'а в BAT-файл, и через Shell вызывайте не сам RAR, а этот батник. Как обрабатывать в батнике переданные ему аргументы, думаю, вы знаете.
Messir
20.01.2010, 23:23 6
Могу выслать пример с перехватом консольного вывода в текстбокс, если хочешь... там все предельно упрощено.
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 13
21.01.2010, 07:37  [ТС] 7
To Comanche - Ну да, все гениальное просто. В принципе можно через запуск батников, просто я хотел отойти от батников. Ночью сервер бэкапит все подряд и совершает кучу других действий и количество батников достигает 20 штук - хотелось бы избавиться.
To Messir - Если несложно, сбросьте на bu2@mail.ru - буду премного благодарен.

Спасибо.
0
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
21.01.2010, 12:29 8
To Messir - И мне на nickstaves@yahoo.com плз...
0
Silver
21.01.2010, 13:13 9
2 Messir!
И мне пожалуйста на silver@rbcmail.ru
Messir
21.01.2010, 13:51 10
2 Silver:
Your mail address not seems to be valid.
Короче говоря, Mail Delivery жалуется, что получатель неверный...
Comanche
21.01.2010, 18:20 11
2BuDva:
«и количество батников достигает 20 штук - хотелось бы избавиться» - а что мешает создавать каждый из этих батников из VB-кода при помощи операций файлового ввода/вывода (Open, Close, Put/Print, Get/Line Input и т.д.)? Т.е. только тогда, когда этот батник оказался вам нужен. Это займёт доли секунды, вы полностью независимы от состояния диска (т.к. больше не храните на нём свои батники постоянно), а Shell можно запускать с последним аргументом VBHIDE - чтоб вообще 'чёрного окна' не видно было. Красивенько получается, по-моему...
0 / 0 / 0
Регистрация: 18.01.2010
Сообщений: 13
24.01.2010, 07:07  [ТС] 12
2Comanche
Собственно говоря, ничего не мешает. Просто встала срочная проблема и я решил ее первым попавшимся способом. Если нетрудно, пример такого ват-ника на bu2@mail.ru - честно говоря, не разу с таким не работал. Спасибо за помощь.
0
24.01.2010, 07:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2010, 07:07
Помогаю со студенческими работами здесь

Запуск внешних программ из go
Не понимаю, как запустить из golang внешнюю программу Windows, например, notepad++.exe.

Загрузка и выполнение внешних jar модулей
Всем доброго дня! Для загрузки модулей приложения использую ClassLoader , и внешний ini файл в...

Запуск внешних приложений и выполнение команд
Добрый день! Такая проблема: как запустить в Python программу и подать ей какую-нибудь команду. Я...

Запуск внешних программ из WinForms
создаю приложение, выдает такую ошибку : "Имя "Process" отсутствует в текущем контексте" вот код ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru