Создание BAT файлов
Редактировать BAT файл можно в блокноте или любом другом текстовом редакторе, ориентированным на работу с кодом.
В путях к папкам и исполняемым файлам наличие пробела вызывает ошибку.
На Windows (как, впрочем, и на UNIX) установленные в системе программы соответствующим образом регистрируются системой. Поэтому некоторые из установленных программ могут запускаться одной простой командой из BAT файла или из апплета Выполнить
панели Пуск
. Одной из таких программ является Firefox:
start firefox
Если после этой команды писать путь к исполняемому файлу, то происходит следующее: запускается обозреватель Firefox и пробует обработать запрос, то есть файл, путь к которому указан. То есть, если указать следующее:
start firefox C:\Program Files\Mozilla Firefox\firefox.exe
Обозреватель откроется, чтобы не было написано после start firefox
. Однако, если взять портативную программу, то ситуация окажется совсем иная. Рассмотрим в качестве примера ftp-клиент Filezilla. Поскольку система не знает о программе, вышеупомянутая строчка
start filezilla
работать не будет. Чтобы запустить неизвестную системе программу, надо указать к ней путь:
start D:\FileZilla\FileZilla.exe
Длинныe имена в bat-файлах
Теперь поговорим о путях и пробелах. Первый способ избежать этой проблемы - использование короткого имени.
start C:\Program Files\Sound Club\scw.exe
В примере два имени с пробелами. Заменим их короткими. Правила создания коротких имен следующие: в коротком имени используются первые шесть символов имени без учета пробелов, после имени указывают порядковый номер папки с помощью символа ~. Так как папки Program Files и Sound Club у меня в единственном числе, получится следующее:
Program Files - Progra~1
Sound Club - SoundC~1
start C:\Progra~1\SoundC~1\scw.exe
Если рядом будут присутствовать две папки, например Sound Club и Sound Clown, то следуя правилам, в примере выше надо будет указать SoundC~2, так как в этом случае Sound Club окажется вторым именем (имена считаются в алфавитном порядке).
Но этот способ неудобен тем, что приходится указывать порядковые номера. Ситуация с Program files более менее нормальная. Мало у кого встретится две подобные папки на системном диске. Но если вы решили установить несколько продуктов Mozilla на свой компьютер. У вас получится несколько папок, например:
Mozilla Firefox
Mozilla Thunderbird
Mozilla Sunbird
Короткими именами для них будут
Mozill~1
Mozill~2
Mozill~3
А теперь представьте, что вы написали BAT файл с упоминанием этих программ. Если удалить Firefox, оставшиеся записи перестанут работать, а если удалить Thunderbird, перестанет работать запись для Sunbird.
Пробелы и кавычки в bat-файлах
Кавычки на самом деле работают, но не с теми способами, которые обычно советуют. Советуют обычно следующее:
start "C:\Program Files\Sound Club\scw.exe"
Так команда не сработает, поскольку если посмотреть справку по ней (start /?), то в справке вы увидите следующее:
START ["заголовок"] [/D путь] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE узел NUMA] [/AFFINITY маска сходства] [/WAIT] [/B]
[команда/программа] [параметры]
Как видите, первым параметром идёт заголовок окна и он как раз в кавычках. Этот параметр необязательный, но его всё же советуют указывать, чтобы избежать ошибок при выполнении команды. Внутри кавычек можно ничего не писать. Получится так:
start "" "C:\Program Files\Sound Club\scw.exe"
Также сработает и вариант с заключением в кавычки всех имён с пробелами по отдельности:
start C:\"Program Files"\"Sound Club"\scw.exe
Однако, в ряде случаев не работает ничего из вышеописанного. В таких случаях я могу посоветовать использовать команду cd. Переходим на системный раздел, затем с помощью cd в папку Program Files и запускаем программу (start):
%SystemDrive%
cd \Program Files\Sound Club\
start scw.exe
Я думаю, что такой способ будет работать везде. Теперь еще пара важных моментов. Допустим вы создали батник, запускающий три программы и вам нужно на время исключить запуск одной из трех. Это можно сделать комментированием.
start firefox
start jetaudio
rem start defraggler
В данном случае отключен запуск установленной в системе программы Defraggler.exe. Комментируют строки, указывая команду rem в начале строки. Все BAT файлы выполняются в окне консоли. Чтобы оно исчезало по окончании выполнения команд, не забывайте в конце писать команду на выход exit.
start firefox
start jetaudio
rem start defraggler
exit
Запуск приложений из bat-файла
Выше было изложено несколько способов запуска приложений при помощи BAT файла. Самый первый - это короткая команда на запуск установленной в системе программы.
start firefox
Это не всегда работает. Поэтому такой прием можно вполне применять на какой-то конкретной системе, но в качестве универсального решения он не подходит. Если есть цель заставить работать BAT файл везде и всегда, нужно пользоваться полными путями:
start C:\"Program Files"\"Mozilla Firefox"\firefox.exe
Также, в BAT файле обязательно должна присутствовать команда на завершение:
start C:\"Program Files"\"Mozilla Firefox"\firefox.exe
exit
Запуск программ в bat-файлах с параметрами (ключами)
Программу можно не просто запускать, а давать ей дополнительные команды при запуске. Например, скомандовать запускаться свернутой:
start /min D:\FileZilla\FileZilla.exe
exit
Ключ указывается через слэш после основной команды (команда /ключ). Основной командой в данном случае является start.
start /?
Консоль выведет на экран перечень допустимых ключей c комментариями для команды start.
Обратите внимание на ключ /wait. В некоторых случаях он бывает просто незаменим. Например, вы решили с помощью BAT файла распаковать архив с программой и эту самую программу запустить. В батнике получится две команды - на распаковку и на запуск. Поскольку команды при запуске BAT файла выполнятся почти одновременно, архив распаковаться не успеет и запускать будет нечего. Поэтому будет ошибка. В этом случае на помощь придет ключ /wait:
Таким образом система сначала выполнит первое действие, дождется его завершения и только после этого приступит ко второму. Если необходимо подождать конкретный отрезок времени, то проще воспользоваться консольной утилитой Sleep. В нужном месте BAT файла пишете следующую команду (число - количество секунд):
start Sleep.exe 15
С помощью ключей можно устанавливать приложения в тихом режиме. Для этого используется несколько ключей в зависимости от типа инсталятора, применяющегося для установки программы на компьютер:
/S
/s
/q
/silent
и ряд других
В ряде случаев бывает очень удобно.
start avast.exe /S
exit
запускаете его и программа устанавливается на компьютер практически без вашего участия.
Есть и другие возможности по управлению программами при помощи BAT файлов. Можно запустить программу, приказав ей открыть файл при запуске. Очень удобно, когда весь твой инструментарий открывает нужные документы и папки нажатием всего одной кнопки:
rem соединение с ftp-сервером
start /min D:\FileZilla\FileZilla.exe "ftp://логин:пароль@сервер"
rem открытие index.php в Firefox
start C:\"program files"\"mozilla firefox"\firefox.exe "http://localhost/папка_сайта/index.php"
rem открытие start.html в текстовом редакторе
start /min C:\"Program Files"\текстовой_редактор.exe "E:\сервер\папка_сайта\index.html"
rem открытие папки с файлами сайта
start /min E:\сервер\папка_с_сайтом
rem выход из консоли
exit
Отмечу, что все вышеописанные приемы можно применять в различных комбинациях и сочетаниях.
start /min /wait program.exe /m /S
start C:\Directory\program2.exe "C:\Files\file.odt"
exit
Но важно помнить: всё, что касается выполнения запускаемой в батнике программы, пишется с ней в одной строке.
start C:\"program files"\"mozilla firefox"\firefox.exe "http://localhost/папка_сайта/index.php"