• Приветствую тебя уважаемый гость на форуме, посвященный компьютерам! В дружелюбной обстановке у вас будет возможность обсудить различные технические вопросы, касаемых: компьютеров, ноутбуков, программ для ПК. Обратите внимание, компьютерный форум Hard-Help.ru не коммерческий ресурс, то есть наши модераторы ничего не продают и не хвалят разные товары за деньги. Если это ваш первый визит, рекомендуем почитать справку по форуму. Для создания тем и размещения сообщений необходимо зарегистрироваться. После регистрации и успешной авторизации в темах не будет видна реклама от компании Google, а также появятся дополнительные функции. Желаем Вам приятного общения и новых друзей!

Запуск программ Windows из командной строки и cmd-файлов

Регистрация
16 Фев 2011
Сообщения
47
Репутация
0
Баллы
6
Среда Windows несомненно удобна для рядового пользователя своим простым и понятным «оконным» интерфейсом. Разработчики программ создают в окнах своих приложений массу удобных и полезных элементов управления. Однако, большинство пользователей, разобравшись с работой основных элементов управления, так постоянно и выполняют однообразные, ежедневные операции с их помощью. Поэтому часто приходится видеть пользователя, который, выполнив несколько «привычных» манипуляций, через оконную форму запускает, к примеру, антивирусный сканер, а затем терпеливо ждёт, когда закончится проверка дисков на вирусы. А ведь многие подобные повседневные операции можно поручить выполнять самому компьютеру. <br><br>Все крупные программные продукты имеют в своём составе либо утилиту для запуска из командной строки (exe-файл с добавлением к названию «Cmd»), либо непосредственную возможность запуска исполняемого файла с дополнительными параметрами. В данной статье будет рассказано, как с помощью командной строки запускать распространённые программы (антивирус Dr.Web, дисковый архиватор Acronis TrueImage, архиватор WinRar, программу записи CD\DVD – Nero Burning ROM), как создать командные файлы cmd для запуска необходимых программ по расписанию и как запустить программы через командную строку из Delphi-приложения. Тут будут даны только общие принципы запуска с наиболее часто применяемыми параметрами. Более подробно о параметрах запуска программ из командной строки можно узнать из справочной системы необходимой программы, а так же на сайте программы в разделе «поддержка». <br><br>1. Параметры запуска антивируса Dr.Web. <br><br>Когда вы собираетесь выполнить проверку вашей системы антивирусным сканером, вы находите ярлык антивируса, запускаете его, в открывшемся окне выбираете необходимые параметры сканирования и нажимаете «запуск сканирования». Конечно, на это уходят секунды, но если эти действия вы выполняете постоянно, и они одинаковы (происходит проверка одних и тех же дисков), можно автоматизировать эти операции. Для этого можно, например, создать на рабочем столе новый ярлык, в свойствах которого в поле «Объект» указать, к примеру: <br><br>«”D:\Programms\DrWeb\drweb32w.exe“ C: /AL /SD /QU» <br><br>Здесь: <br><br>”D:\Programms\DrWeb\drweb32w.exe“ – полный путь к исполняемому файлу антивирусного сканера drweb32w.exe; <br><br>C: - диск, который следует просканировать. Тут можно указать и отдельную папку и все диски в системе (заменить «С:» на символ «*»). <br><br>/AL – сканировать все файлы в выбранном разделе или папке (ALL) <br><br>/SD – проверять вложенные папки (SubDirectories) <br><br>/QU - выйти из программы при завершении проверки (Quits).
 
По умолчанию все заражённые файлы будут перемещены в папку «INFECTED.!!!» программы DrWeb, однако и эти установки можно задать в строке запуска с помощью параметра /CU[RDM][P] – где можно выбрать: R – (rename) переименовать (по умолчанию первый символ в названии файла из меняется на "#"), D – (delete) удалить, M – (move) переместить (по умолчанию в папку «INFECTED.!!!»). Параметр P – указывает, необходимо ли запрашивать у пользователя разрешение на выполнение действия (по умолчанию отключен). <br><br>Параметры запуска дискового архиватора Acronis True Image. <br><br>Системным администраторам, да и многим пользователям домашних компьютеров, знакомо семейство программ для создания дисковых образов (Images) от фирмы Acronis. Существуют версии как для обычных ПК, под управлением ОС Windows, так и для серверных платформ. Удобство программы в том, что во время создания образа обеспечивается целостность данных на уровне дисковых устройств даже если происходит выполнение программ с архивируемого диска. Это значит, что данные, которые изменены во время работы программы не будут сохранены в образе, но предыдущее состояние сохранится. Архиватор WinRar, например, при попытке архивировать программу, выполняемую в данный момент, сообщит об ошибке. Кроме того продукты серии True Image от Acronis позволяют создавать диски для аварийного восстановления системы, просматривать содержимое образа и т.д… <br><br>Если приходится постоянно создавать образ одного и того же диска (как правило диска, где расположена ОС), можно так же создать команду в командной строке, например: <br><br>C:\Programms\TrueImageCmd.exe /create /partition:1-1 /filename:F:\backup.tib <br><br>Тут следует обратить внимание на то, что из командной строки запускается не сам исполняемый файл программы, а специальная утилита TrueImageCmd.exe, входящая в пакет установки программы. В этой строке: <br><br>C:\Programms\TrueImageCmd.exe – путь к файлу TrueImageCmd.exe. <br><br>/partition:1-1 – номер диска и раздела на диске, с которого необходимо создать образ <br><br>/filename:F:\backup.tib – путь к файлу-образу, который будет создан программой. <br><br>Таким образом создание образ диска можно выполнить всего одной командой из командной строки, не проходя каждый раз путь ввода настроек, который неизбежен при использовании оконного интерфейса программы True Image. Так же при запуске можно задавать дополнительные параметры, такие как степень сжатия архивного образа, пароль на открытие образа и т.д. Все они подробнее описаны в справке к программе. <br><br>3. Запуск архиватора WinRar. <br><br>Знакомый всем архиватор WinRar, в отличие от программы True Image от Acronis удобно использовать для создания архивных копий отдельных файлов и папок, а не целых дисков. Если требуется периодически создавать копии одних и тех же файлов и\или папок можно так же воспользоваться режимом запуска из командной строки. <br><br>Пример командной строки для запуска задания на архивирование: <br><br>"C:\Program Files\WinRAR\WinRAR.exe" u -r -y -ep1 с:\archive\arch.rar "с:\MyFiles\" <br><br>C:\Program Files\WinRAR\WinRAR.exe - полный путь к программе WinRar <br><br>с:\archive\arch.rar - путь к архивному файлу <br><br>"с:\MyFiles\"- путь к папке приготовленной для архивирования. Следует обратить внимание на то, что пути к папкам, где есть хоть один символ кириллицы или пробел в имени, обязательно должны заключаться в кавычки.
 
Используемые в данном примере команды и ключи WinRar: <br><br>u - обновлять данные в архиве. То есть если какие-то файлы со времени последнего добавления в архив не изменились, WinRar не будет тратить время на то, чтобы добавлять их в архивный файл <br><br>-r - архивировать также вложенные папки. Если не поставить этот ключ, они не будут занесены в архив <br><br>-y - отвечать "ДА" на все вопросы. Если программа будет запускаться без участия пользователя, значит, она не должна пытаться узнать, например, перезаписать ли файл в архиве и так далее <br><br>-ep1 - исключить из архива название стартовой папки <br><br>4. Пример запуска программы записи CD\DVD – Nero Burning ROM. <br><br>Известная большинству пользователей программа записи CD\DVD – Nero Burning ROM так же имеет в своём установочном пакете утилиту командной строки «nerocmd.exe». Поэтому из командной строки необходимо запускать именно её с дополнительными ключами. <br><br>Ккоманда для записи на перезаписываемый DVD выглядит следующим образом: <br><br>c:\Program files\Ahead\Nero\nerocmd.ехе --no_user_interaction --write --real --iso Archive --drivename D --force_erase_cdrw --dvd --dvd_high_compatibility с:\archive\*.* <br><br>c:\Program files\Ahead\Nero\nerocmd.ехе – путь к файлу nerocmd.exe <br><br>Что означают ключи: <br><br>--no_user_interaction - для автоматического режима, чтобы программа ничего не спрашивала у пользователя <br><br>--write - записать указанные файлы <br><br>--real - произвести физическую запись (в противном случае будет только эмуляция записи) <br><br>--iso Archive - дать диску заголовок "Archive" <br><br>--drivename D - указать букву компакт-диска <br><br>--force_erase_cdrw - сначала отформатировать диск (необходимая команда для CDRW и DVDRW, для CDR и DVDR она не нужна) <br><br>--dvd - указать, что работаем с DVD (для CD этот ключ не нужен) <br><br>--dvd_high_compatibility - режим наилучшей совместимости записанных DVD (чтобы везде читались). <br><br>с:\archive\*.* - путь к папке с архивами. <br><br>Утилита так же имеет много дополнительных параметров запуска, которые описаны в справочной системе программы. <br><br>5. Создание cmd-файлов, запуск по расписанию. <br><br>Командные файлы представляют собой обычные текстовые файлы и (в Windows) имеют строго определенное расширение «.BAT» или «.CMD». В командном файле могут записываться последовательности команд операционной системе, вызовы программ или других командных файлов. Все они запускаются на исполнение в порядке описания в файле, т. е. так, как если бы они вводились с клавиатуры в командную строку.
 
Для создания cmd-файла необходимо: <br><br>1. Создать в удобном месте новый текстовый файл. <br><br>2. Заполнить его необходимым набором команд. На каждой строке размещается новая команда. <br><br>3. Сохранить файл с расширением «.cmd» <br><br>В cmd-файлах используется специальный «язык командных файлов», унаследованный ОС Windows ещё от системы DOS [1]. Описание этого языка не входит в рамки данной статьи. Стоит только отметить, что командами могут являться те самые команды, описанные в примерах выше. Для примера создадим командный файл, который будет запускать антивирусное сканирование всех дисков на компьютере, создание образа загрузочного раздела жёсткого диска и сохранение этого образа на DVD диск. Для этого выполним следующее: <br><br>1. На диске С: создадим новый текстовый файл. (Правая кнопка мыши – создать – текстовый файл) <br><br>2. Заполним его следующими командами: <br><br>;----------------- <начало файла> --------------------- <br><br>“С:\Programm Files\DrWeb\drweb32w.exe“ C: /AL /SD /QU <br><br>“C:\ Programm Files \TrueImageCmd.exe“ /create /partition:1-1 /filename:D:\MyBackup.tib <br><br>“C:\Program files\Ahead\Nero\nerocmd.ехе“ --no_user_interaction --write --real --iso Archive --drivename D --force_erase_cdrw --dvd --dvd_high_compatibility D:\MyBackup.tib <br><br>;----------------- <конец файла> ---------------------- <br><br>4. Сохраним файл, дав ему имя arch.cmd. <br><br>Теперь при необходимости можно задать вызов этого командного файла по расписанию. Для этого в Windows существует специальная подсистема «Назначенные задания». Вызывается она через «Пуск» - «Настройка» - «Панель управления» - «Назначенные задания». Там нужно выбрать «Добавить задание», и оно запустит несложный «Мастер», которому нужно указать необходимые параметры. Через кнопку «Обзор» указать файл arch.cmd частота выполнения - ежедневно, время, например, в 2 ночи. Таким образом можно совершенно избавить себя от выполнения операций по запуску антивирусных программ и созданию резервных копий. <br><br>5. Работа с командной строкой из Delphi-приложений.
 
Иногда перед программистом встаёт задача выполнить командную строку из своего приложения. Например, это простейший способ открыть интернет - браузер, установленный в системе по умолчанию и загрузить в него какую-то страницу. Для этого в Windows достаточно сделать следующее: нажать «Пуск» - «Выполнить», в поле ввода ввести необходимый адрес, например «http://www.yandex.ru» и нажать «Ок». Откроется интернет – браузер и в него загрузится страница www.yandex.ru. Как сделать то же из Delphi-приложения? Следующая функция получает в качестве входного параметра строку, представляющую собой команду для выполнения, выполняет эту команду и ожидает завершения работы вызванного приложения (например при запуске архиватора произойдёт ожидание завершения архивации): <br><br>Function Exec(s:string):boolean; <br><br>var <br><br>si:StartUpInfo; <br><br>pi:process_Information; <br><br>b:boolean; <br><br>c:array[0..255] of char; <br><br>begin <br><br>strpcopy(c,s); <br><br>fillchar(si,sizeof(si),0); <br><br>si.cb:=sizeof(si); <br><br>fillchar(pi,sizeof(pi),0); <br><br>b:=CreateProcess(nil,c,nil,nil,false,0,nil,nil,si,pi); // попытка запуска процесса <br><br>if b=TRUE then // если процесс запущен <br><br>begin <br><br>WaitForSingleObject( pi.hProcess, INFINITE ); //ожидание завершения процесса <br><br>CloseHandle(pi.hProcess); <br><br>CloseHandle(pi.hThread); <br><br>end; <br><br>result:=b; // результат «выполнено\невыполнено» <br><br>end; <br><br>В основе функции Exec лежит функция Delphi CreateProcess, которая как раз и передаёт на выполнение операционной системе командную строку. Результат работы функции Exec – логическое значение: true – команда выполнена успешно, false – команда не выполнена. <br><br>Теперь для выполнения командной строки в приложении нужно вызвать данную функцию. Пример для открытия в браузере страницы «www.yandex.ru» будет выглядеть так: <br><br>If Exec( ‘http://www.yandex.ru’) then ShovMessage(‘Страница загружена!’); <br><br>Теперь из приложения можно запускать архиватор, антивирус, почтовый клиент и любую другую программу. <br><br>Литература <br>А.В.Попов. Командные файлы и сценарии Windows Script Host. - СПб.: БХВ-Петербург, 2002.
 
Не за что ;) Не вы же писали, просто желательно было бо подправить, ато и я уже стал думать, что есть ещё одна "делфа" )))
 
Сверху