Как использовать bat файл. Как сделать bat файл для запуска программы

Bat-файлы Windows являются удобным способом выполнения различных задач на ПК, которым активно пользуются компьютерные умельцы. Они позволяют автоматизировать повседневные задачи, сократить время их выполнения и превратить сложный процесс во что-то посильное рядовому пользователю. В данной статье представлены базовые возможности командных файлов и рекомендации по самостоятельному их написанию.

Автоматизация - это просто

Как создать bat-файл? Для этого нужно выполнить следующие действия:

  1. В любом текстовом редакторе, например, в Notepad или WordPad, создать текстовый документ.
  2. Записать в нем свои команды, начиная с @echo , а затем (каждый раз в новой строке) - title [название пакетного скрипта], echo [сообщение, которое будет выведено на экран] и pause.
  3. Сохранить текст в электронном документе с расширением.bat (например, test.bat).
  4. Для запуска следует дважды щелкнуть по только что созданному пакетному файлу.
  5. Чтобы его отредактировать, необходимо кликнуть на нем правой кнопкой мыши и из контекстного меню выбрать пункт «Изменить».

Необработанный файл будет выглядеть примерно так:

title Это ваш первый скрипт bat-файла!

echo Добро пожаловать в сценарий пакетной обработки!

Более подробно о командах bat-файлов и их использовании речь пойдет ниже.

Шаг 1: создание программного скрипта

Предположим, что у пользователя часто возникают проблемы с Сетью. Он постоянно пользуется командной строкой, набирая ipconfig и пингуя Google для устранения неполадок в Сети. Через некоторое время пользователь понимает, что было бы намного эффективнее, если бы он написал простой bat-файл, записал его на свой USB-накопитель и запускал его на компьютерах, которые он диагностирует.

Создание нового текстового документа

Пакетный файл упрощает выполнение на компьютере повторяющихся задач с помощью командной строки Windows. Ниже приведен пример скрипта, отвечающего за отображение на экране некоторого текста. Перед тем как создать bat-файл, следует щелкнуть правой кнопкой мыши на пустом месте в каталоге и выбрать пункт «Создать», а затем «Текстовый документ».

Добавление кода

Двойной щелчок на этом новом текстовом документе откроет принятый по умолчанию текстовый редактор. Можно скопировать и вставить приведенный выше пример кода в текстовую запись.

Сохранение

Вышеупомянутый скрипт выводит на экран текст «Добро пожаловать в сценарий пакетной обработки!». Электронный документ необходимо записать, выбрав пункт меню текстового редактора «Файл», «Сохранить как», а затем указать желаемое имя bat-файла. Его следует завершить расширением.bat (например, welcome.bat) и нажать «ОК». Для правильного отображения кириллицы в некоторых случаях следует удостовериться в правильном выборе кодировки. Например, при использовании консоли русифицированной системы Windows NT документ необходимо сохранить в CP866. Теперь следует дважды щелкнуть на ярлыке bat-файла, чтобы активировать его.

Но экране появится надпись:

"Добро пожаловать в сценарий пакетной обработки! Для продолжения нажмите любую клавишу..."

В случае если bat-файл не запускается, пользователи рекомендуют зайти в регистр и удалить ключ:

"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BAT\UserChoice".

Не стоит думать, что это все, на что способны сценарии пакетной обработки. Параметрами скриптов являются измененные версии команд командной строки, поэтому пользователь ограничен только их возможностями. А они довольно обширные.

Шаг 2: знакомство с некоторыми командами

Если пользователь ПК знаком с тем, как следует выполнять команды консоли DOS, то он будет мастером создания программных скриптов, потому что это один и тот же язык. Строки в bat-файлах сообщат интерпретатору cmd.exe все, что от него требуется. Это экономит время и силы. Кроме того, есть возможность задать некоторую логику (например, простые циклы, условные предписания и т. д., которые концептуально схожи с процедурным программированием).

Встроенные команды

1. @echo - это команда bat-файлов, которая позволит увидеть работу скрипта в командной строке. Она используется для просмотра хода выполнения рабочего кода. Если у пакетного файла возникают какие-либо проблемы, то данная команда позволит быстро локализировать проблемы. Добавление off дает возможность быстро завершить выполнение кода, избегая вывода ненужной информации на экран.

2. Title предоставляет те же возможности, что и тег в HTML, т. е. создает заголовок для пакетного скрипта в окне командной строки.</p><p>3. Call вызывает один bat-файл из другого или подпрограмму внутри одного сценария. Например, функция power вычисляет степень %2 числа %1:</p><p>if %counter% gtr 1 (</p><p>set /a counter-=1</p><p>endlocal & set result=%prod%</p><p><img src='https://i2.wp.com/syl.ru/misc/i/ai/324915/1862019.jpg' width="100%" loading=lazy></p><p>4. Cls очищает командную строку. Используется для того, чтобы предыдущий вывод постороннего кода на помешал просмотру хода выполнения текущего скрипта.</p><p>5. Color задает цвет шрифта и фона. Например, команда color f9 задает белые буквы на синем фоне. Команда без параметра восстанавливает установки по умолчанию.</p><p>6. Echo служит для вывода информации, а также включения (echo on) или выключения (echo off) такого вывода. Например, команда echo. выводит новую строку без точки, а echo . - точку. Без параметров команда выводит на экран информацию о своем текущем статусе - echo on или echo off.</p><p>7. Rem обеспечивает ту же функциональность, что и тег <! в HTML. Такая строка не является частью выполняемого кода. Вместо этого она служит для пояснения и предоставления информации о нем.</p><p>8. Pause позволяет прервать выполнение команд bat-файла. Это дает возможность прочесть выполненные строки перед продолжением программы. При этом на экран выводится сообщение «Для продолжения нажмите любую клавишу...».</p><p>9. Set позволяет просмотреть или установить переменные окружения. С ключом /p команда запрашивает у пользователя ввод и сохраняет его. С параметром /а она дает возможность выполнять простые арифметические операции, также присваивая их результат переменной. При операциях со строками не должно быть пробелов ни до, ни после знака равенства. Например, команда set выводит на дисплей список переменных окружения, set HOME - значения аргументов, начинающихся с “HOME”, а set /p input=введите целое: запрашивает ввод целого числа и присваивает его соответствующей переменной.</p><p>10. Start "" [веб-сайт] запустит заданный веб-сайт в веб-браузере, используемом по умолчанию.</p><p>11. If служит для проверки определенного условия. Если оно истинно, то выполняется следующая за ним команда. Условия бывают 3 видов:</p><ul><li>ERRORLEVEL число - проверка кода завершения последней выполненной инструкции на соответствие или превышение указанного числа. При этом 0 обозначает успешное выполнение задачи, а любое другое число, обычно положительное, сообщает об ошибке. Например, можно использовать вложенные команды для точного определения кода завершения: if errorlevel 3 if not errorlevel 4 echo произошла ошибка №3.</li><li>Строка1 == строка2 - проверка совпадения двух строк. Например, при отсутствии внешнего параметра команда if "%1"= ="" goto ERROR передаст управление метке ERROR.</li><li>EXIST имя - проверка существования файла с указанным именем. Например, if not exist A:\program.exe COPY C:\PROJECTS\program.exe A: копирует программу program.exe на диск А, если ее там нет.</li> </ul><p>12. Else должна находиться в одной строке с командой If. Указывает на необходимость выполнения следующей инструкции, если выражение окажется ложным.</p><p><img src='https://i1.wp.com/syl.ru/misc/i/ai/324915/1862021.jpg' width="100%" loading=lazy></p><p>13. For используется для повторения определенных действий с каждым членом списка. Имеет формат for %%аргумент in (список) do команда. Аргументом может быть любая буква от A до Z. Список представляет собой последовательность строк, разделенных пробелами или запятыми. Подстановочные знаки также могут использоваться. Например:</p><ul><li>for %%d in (A, C, D) do DIR %%d - последовательно выводит на экран директории дисков А, С и D;</li><li>for %%f in (*.TXT *.BAT *.DOC) do TYPE %%f - печатает содержимое всех.txt-, .bat- и.doc-файлов в текущей директории;</li><li>for %%P in (%PATH%) do if exist %%P\*.BAT COPY %%P\*.BAT C:\ВАТ - копирует все пакетные файлы, которые существуют во всех каталогах маршрута поиска в папку С:\ВАТ.</li> </ul><p>14. Двоеточие (:) перед словом образует из него ссылку, которая позволяет пропускать часть программного кода или возвращаться назад. Используется с командами Call и Goto, указывая, с какого места следует продолжать выполнение bat-файла, например, при выполнении определенного условия:</p><p>15. Переменные:</p><ul><li>%%a обозначает каждый файл в папке;</li><li>%CD% - текущая директория;</li><li>%DATE% - системная дата, формат которой зависит от локализации;</li><li>%TIME% - системное время в виде ЧЧ:ММ:СС.мм.;</li><li>%RANDOM% - сгенерированное псевдослучайное число в диапазоне от 0 до 32767;</li><li>%ERRORLEVEL% - код завершения, возвращаемый последней выполненной командой или bat-скриптом.</li> </ul><p>Извлечь часть строки, которая содержится в переменной, при известном ее положении и длине можно так:</p><p>%[переменная]:~[начало],[длина]%. Например, показать дату в формате ДД/ММ/ГГГГ как ГГГГ-ММ-ДД можно так: echo %DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%.</p><p>16. (". \") - корневая папка. При работе с консолью перед изменением имени файла, его удалением и т. д. необходимо направить действие команды в конкретный каталог. При использовании пакетного файла достаточно запустить его в любом нужном каталоге.</p><p>17. %цифра - принимает значения параметров, передаваемых пользователем в bat-файл. Могут разделяться пробелами, запятыми или двоеточиями. «Цифра» представляет собой число от 0 до 9. Например, %0 принимает значение текущей команды. %1 соответствует первому параметру и т. д.</p><p>18. Shift - команда, используемая для смещения входных параметров на одну позицию. Применяется, когда пакетному файлу передаются внешние аргументы. Например, следующий bat-файл копирует на диск D файлы, заданные в качестве параметров в командной строке:</p><p>if not (%1)==() goto next</p><p>Кроме того, с аргументами можно производить следующие манипуляции:</p><ul><li>%~ - удалить окружающие кавычки;</li><li>%~f - расширить параметр до полного имени пути вместе с именем диска;</li><li>%~d - показать имя диска;</li><li>%~p - отобразить только путь;</li><li>%~n - выделить из параметра только имя файла;</li><li>%~x - оставить лишь расширение;</li><li>%~s - преобразовать путь в представление с короткими именами;</li><li>%~a - извлечь атрибуты файла;</li><li>%~t - вывести дату и время создания;</li><li>%~z - отобразить размер файла;</li><li>%~$PATH: - производит поиск в директориях, перечисленных в переменной окружения PATH, и расширяет параметр до первого найденного соответствующего полного имени или же выдает пустую строку в случае неудачи.</li> </ul><p><img src='https://i2.wp.com/syl.ru/misc/i/ai/324915/1862020.jpg' width="100%" loading=lazy></p><h2>Подстановочные знаки</h2><p>Многие команды принимают шаблоны имен файлов - знаков, которые позволяют установить соответствие с группой имен файлов. К подстановочным знакам относятся:</p><ul><li>* (звездочка) - обозначает любую последовательность символов;</li><li>? (знак вопроса) - заменяет один (или 0) знак, отличный от точки (.).</li> </ul><p>Например, команда dir *.txt выводит список txt-файлов, а dir ???.txt - перечень текстовых документов, длина имени которых не превышает 3 букв.</p><h2>Функции</h2><p>Как и подпрограммы, они эмулируются с помощью команд call, setlocal, endlocal и меток. Следующий пример демонстрирует возможность определения переменной, в которой сохраняется результат, в строке вызова:</p><p>call:say result=world</p><p><img src='https://i0.wp.com/syl.ru/misc/i/ai/324915/1862022.jpg' width="100%" loading=lazy></p><h2>Вычисления</h2><p>В bat-файлах можно выполнять простые арифметические операции с целыми 32-битными числами и битами с помощью команды set /a. Максимальным поддерживаемым числом является 2^31-1 = 2147483647, а минимальным - -(2^31) = -2147483648. Синтаксис напоминает язык программирования Си. К арифметическим операторам относятся: *, /, %, +, -. В bat-файле % (остаток целочисленного деления) должен вводиться как “%%”.</p><p>Операторы с двоичными числами интерпретируют число как 32-битную последовательность. К ним относятся: ~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). Логическим оператором отрицания является! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0. Оператором комбинирования служит, (запятая), которая позволяет производить большее число операций в одной команде set. Комбинированные операторы присваивания += и -= в выражениях a+=b и a-=и соответствуют выражениям a=a+b и a=a-b. Так же работают и *=, %=, /=, &=, |=, ^=, >>=, <<=. Приоритет операторов следующий:</p><p>(); %+-*/; >>, <<; &; ^; |; =, %=, *=, /=, +=, -=, &=, ^=, |=, <<=, >>=; ,</p><p>Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.</p><h2>Внешние команды</h2><ul><li>Exit используется для выхода из консоли DOS или (с опцией /b) только текущего bat-файла или подпрограммы.</li><li>Ipconfig - это классическая консольная команда, которая выводит информацию о сети. Она включает MAC- и IP-адреса, и маски подсети.</li><li>Ping пингует IP-адрес, отправляя к нему пакеты данных, чтобы оценить его удаленность и время ожидания (отклика). Также используется для задания паузы. Например, команда ping 127.0.01 -n 6 приостанавливает выполнение кода на 5 с.</li> </ul><p>Библиотека команд bat-файлов огромна. К счастью, в Сети есть множество страниц, в которых все они перечислены, наряду с переменными пакетного скрипта.</p><p><img src='https://i0.wp.com/syl.ru/misc/i/ai/324915/1862017.jpg' width="100%" loading=lazy></p><h2>Шаг 3: запись и запуск bat-файла</h2><p>Следующий скрипт намного упростит ежедневную онлайн-активность. Что делать, если есть желание мгновенно открыть все свои любимые новостные сайты? Поскольку скрипты используют команды консоли, то можно создать сценарий, который открывает каждую новостную ленту в одном окне браузера.</p><p>Далее следует повторить процесс создания bat-файла, начав с пустого текстового документа. Для этого необходимо щелкнуть правой кнопкой мыши на пустом месте в какой-либо папке и выбрать пункт «Создать», а затем - «Текстовый документ». После открытия файла требуется ввести следующий скрипт, который запускает основные русскоязычные средства массовой информации, доступные в Интернете:</p><p>start "" http://fb.ru</p><p>start "" http://www.novayagazeta.ru</p><p>start "" http://echo.msk.ru</p><p>start "" http://www.kommersant.ru</p><p>start "" http://www.ng.ru</p><p>start "" http://meduza.io</p><p>start "" https://news.google.com/news/?ned=ru_ru&hl=ru</p><p>Данный скрипт содержит команды start “”, которые открывают несколько вкладок. Можно заменить предложенные ссылки любыми другими на выбор. После ввода скрипта следует зайти в меню редактора «Файл», а затем в «Сохранить как...» и записать документ с расширением.bat, изменив параметр «Тип файла» на «Все файлы» (*. *).</p><p>После сохранения для запуска скрипта достаточно дважды щелкнуть на нем. Веб-страницы мгновенно начнут загружаться. При желании можно разместить этот файл на своем рабочем столе. Это позволит получить мгновенный доступ ко всем любимым сайтам.</p><h2>Организатор</h2><p>Если загружать по несколько файлов в день, то в скором времени в папке «Загрузки» их скопятся сотни. Можно создать скрипт, который упорядочит их по типу. Достаточно поместить.bat-файл с программой в папку с неорганизованными данными и дважды щелкнуть для запуска:</p><p>rem Каждый файл в папке</p><p>for %%a in (".\*") do (</p><p>rem проверить на наличие расширения и непринадлежность к данному скрипту</p><p>if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (</p><p>rem проверить наличие папки для каждого расширения, и если ее нет, то создать</p><p>if not exist "%%~xa" mkdir "%%~xa"</p><p>rem переместить файл в папку</p><p>move "%%a" "%%~dpa%%~xa\"</p><p>В итоге файлы в директории «Загрузки» сортируются по папкам, названия которых соответствуют их расширению. Это так просто. Данный пакетный скрипт работает с любым типом данных, будь то документ, видео или аудио. Даже если ПК не поддерживает их, сценарий все равно создаст папку с соответствующей меткой. Если уже есть каталог JPG или PNG, то программа просто переместит туда файлы с данным расширением.</p><p>Это простая демонстрация того, на что способны пакетные скрипты. Если какую-то несложную задачу необходимо выполнять снова и снова, будь то упорядочение файлов, открытие нескольких веб-страниц, массовое переименование или создание копий важных документов, пакетный сценарий поможет выполнить утомительную работу за пару кликов.</p> <p>В этой статье:</p> <ul><li>Определение переменных</li> <li>Переменные командной строки (параметры вызова bat-файла)</li> <li>Оператор условия IF</li> <li>Функции</li> <li>Использование возвращаемых значений (обработка кода завершения программы)</li> </ul><p>Определение переменных </p> <p>SET <Имяпеременной>=<Значениепеременной></p> <p>Оператор SET представляет собой расширение возможностей работы с параметрами в операционной системе. Он задает переменную, значение которой подставляется вместо ее имени при любом использовании этого имени между знаками процента. Так, если задано (переменная, которую требуют многие игры, использующие звуковую карту компьютера):</p> <p>SET BLASTER=A220 I5 D1 P330 </p> <p>то при использовании в пакетном файле следующей конструкции:</p> <p>ECHO %BLASTER% </p> <p>на экран будет выведено "A220 I5 D1 P330". Переменные, определенные с помощью оператора SET называются переменными окружения среды (environment) и являются видимыми после выполнения до перезапуска DOS (если не изменять ее вручную в памяти). То есть, ее можно использовать из одного пакетного файла или программы после задания в другом. Наиболее известной является переменная PATH, представляющая собой набор путей для быстрого поиска файлов. Она задается в файле autoexec.bat.</p> <p>Переменные командной строки<br>(параметры вызова bat-файла) </p> <p>%<цифра 0-9></p> <p>Как и в любом языке, в языке пакетных файлов возможно использование переменных, полученных в качестве параметров bat-файла.</p> <p>Всего может быть 10 одновременно существующих независимых переменных. Для написания сложных программ это довольно мало, хотя для обычной работы часто хватает и 3-4. Значение переменной равно значению соответствующего параметра из командной строки. Переменная %0 будет содержать имя.bat-файла и, если вы указали, путь к нему. То есть, если вы запустили файл abc.bat со следующими параметрами:</p> <p>abc.bat a bc def </p> <p>то переменная %0 будет содержать значение abc.bat , %1 будет содержать значение a, %2 будет содержать bc , а %3 - def . Это свойство широко используется для создания универсальных пакетных файлов при работе с повторяющимися операциями.</p> <p>Чтобы получить более чем 10 переменных из командной строки, можно воспользоваться командой SHIFT .</p> <p>Команда SHIFT позволяет использовать число параметров командной строки далее 10. Однако, при этом теряются соответственно более ранние параметры. Иными словами, команда SHIFT сдвигает все значения переменных на один шаг влево. То есть, переменная %0 будет содержать значение, содержавшееся до этого в переменной %1 , а переменная %1 - значение переменной %2 до сдвига. Однако, данная операция является необратимой, то есть, невозможно сдвинуть переменные обратно.</p> <p>Оператор условия IF </p> <p>К счастью, командный интерпретатор cmd.exe современных ОС Windows 2000 и старше поддерживает блоки команд в конструкциях ветвления, что устраняет необходимость применения IF с метками. Блоки команд заключаются в круглые скобки. Выглядит это так (имитируя C/C++ indentation style):</p> <p>if condition (</p> <p>Rem Команды ветки ‘then’ </p> <p>Rem ... </p> <p>) else (</p> <p>Rem Команды ветки ‘else’ </p> <p>Rem ... </p> <p>Конкретный пример использования:</p> <p>@echo off </p> <p>set BUILDMODE=%1 </p> <p>if "%BUILDMODE%" == "" (</p> <p>Echo FAIL: Аргумент является обязательным ^(--debug, --release^) </p> <p>Exit /b 1 </p> <p>rem Удаляем из аргумента все дефисы для упрощения обработки </p> <p>set BUILDMODE=%BUILDMODE:-=% </p> <p>if "%BUILDMODE%" == "debug" (</p> <p>Set CCFLAGS=/Od /MDd /Z7 </p> <p>) else (</p> <p>Set CCFLAGS=/O2 /MD </p> <p>На мой взгляд, с этим уже вполне можно жить. Но, как всегда, жизнь не так проста, как кажется. Есть одна проблема. Переменные, использующиеся в блоках then и else, раскрываются перед началом выполнения этих блоков, а не в процессе выполнения. В приведенном примере это не вызывает никаких проблем, однако в следующем вызовет:</p> <p>if "%BUILDMODE%" == "debug" (</p> <p>Echo INFO: Устанавливаем debug-режим окружения </p> <p>Set OPTFLAGS=/Od </p> <p>Set CCFLAGS=%OPTFLAGS% /MDd /Z7 </p> <p>) else (</p> <p>Echo INFO: Устанавливаем release-режим окружения </p> <p>Set OPTFLAGS=/O2 </p> <p>Set CCFLAGS=%OPTFLAGS% /MD </p> <p>Загвоздка в том, что в обоих блоках подстановка переменной OPTFLAGS произойдет до того, как она будет изменена в процессе выполнения этого блока. Соответственно, в CCFLAGS будет подставлено то значение, которое OPTFLAGS имела на момент начала выполнения данного if-блока.</p> <p>Решается эта проблема путем использования отложенного раскрытия переменных. Переменные, заключенные в !…! вместо %…% , будут раскрыты в их значения только в момент непосредственного использования. Данный режим по умолчанию отключен. Включить его можно либо использованием ключа /V:ON при вызове cmd.exe , либо использованием команды:</p> <p>в тексте самого bat-файла. Второй способ мне представляется более удобным – не очень здорово требовать от кого-то запуска твоего сценария с определенным параметром.</p> <p>С учетом сказанного предыдущий «неправильный» пример может быть исправлен так:</p> <p>setlocal enabledelayedexpansion </p> <p>if "%BUILDMODE%" == "debug" (</p> <p>Echo INFO: Setting up debug mode environment </p> <p>Set OPTFLAGS=/Od </p> <p>Set CCFLAGS=!OPTFLAGS! /MDd /Z7 </p> <p>) else (</p> <p>Echo INFO: Setting up release mode environment </p> <p>Set OPTFLAGS=/O2 </p> <p>Set CCFLAGS=!OPTFLAGS! /MD </p> <p>Вот теперь это почти полноценный if-then-else блок. Почти, потому что если в одной из команд echo у вас встретится закрывающая круглая скобка, то вам необходимо заэкранировать ее символом ^, иначе синтаксический анализатор путается…</p> <p>Но в любом случае, это гораздо лучше безумного количества меток и переходов.</p> <p>Функции </p> <p>А можно создать в bat-файле функцию? Да, можно. Более того, иногда даже нужно. Правда, функциями это можно назвать условно.</p> <p>Есть особый синтаксис команды call , который позволяет перейти на метку в этом же bat-файле с запоминанием места, откуда был произведен этот вызов:</p> <p>call:метка аргументы </p> <p>Возврат из функции производится командой:</p> <p>exit /b [опциональный код возврата] </p> <p>Ключ /b здесь очень важен: без него будет произведен выход не из функции, а из сценария вообще.</p> <p>За подробностями наберите в командной строке:</p> <p>call /? </p> <p>exit /? </p> <p>Что интересно, команда call с таким синтаксисом поддерживает рекурсивные вызовы с автоматическим созданием нового фрейма для переменных аргументов %0-%9. Иногда это может быть полезным. Вот классический пример рекурсивного подсчета факториала на командном языке:</p> <p>@echo off </p> <p>call:factorial %1 </p> <p>echo %RESULT% </p> <p>exit </p> <p>rem Функция для подсчета значения факториала </p> <p>rem Вход: </p> <p>rem %1 Число, для которого необходимо подсчитать факториал </p> <p>rem Выход: </p> <p>rem %RESULT% Значение факториала </p> <p>:factorial </p> <p>if %1 == 0 (</p> <p>Set RESULT=1 </p> <p>Exit /b </p> <p>if %1 == 1 (</p> <p>Set RESULT=1 </p> <p>Exit /b </p> <p>set /a PARAM=%1 - 1 </p> <p>call:factorial %PARAM% </p> <p>set /a RESULT=%1 * %RESULT% </p> <p>exit /b </p> <p>Пример работы:</p> <p>> factorial.bat 10 </p> <p>3628800 </p> <p>Использование возвращаемых значений<br>(обработка кода завершения программы) </p> <p>Любая программа при завершении своей работы возвращает операционной системе код своего завершения. Принято при успешном завершении возвращать ноль, иначе - код ошибки. Иногда, или, вернее, часто, программа "сознательно" возвращает ненулевое значение для того, чтобы в пакетном файле можно было "узнать" некоторые подробности ее работы. Например, программа возвращает код нажатой клавиши, а.bat-файл по нему выполняет различные действия.</p> <p>Каким же образом пакетный файл может узнать код завершения выполненной программы? Для этого предусмотрено ключевая переменная ERRORLEVEL .</p> <p>Пример пакетного файла с errorlevel"ами:</p> <p> @ECHO OFF </p> <p>REM Запускаем программу prg1.exe </p> <p>PRG1.EXE </p> <p>REM Анализ кода завершения </p> <p>IF ERRORLEVEL 2 GOTO FILENOTFOUND </p> <p>IF ERRORLEVEL 1 GOTO WRITEERROR </p> <p>IF ERRORLEVEL 0 GOTO EXITOK </p> <p>GOTO ONEXIT </p> <p>:FILENOTFOUND </p> <p>ECHO Ошибка! Файл не найден! </p> <p>GOTO ONEXIT </p> <p>:WRITEERROR </p> <p>ECHO Ошибка записи! </p> <p>GOTO ONEXIT </p> <p>:EXITOK </p> <p>ECHO Программа завершена благополучно. </p> <p>GOTO ONEXIT </p> <p>:ONEXIT </p> <p>Обратите внимание - анализ кода завершения начинается не с нуля, а с максимально возможного значения. Дело в том, что подобная проверка означает: "если errorlevel больше или равен значению, то...". То есть, если мы будем проверять, начиная с нуля, любое значение будет истинным на первой же строке, что неверно.</p> <p>Это самая распространенная ошибка в подобного рода программах.</p> <p>Каждый день пользователь выполняет за компьютером огромное количество различных операций с файлами, службами и программами. Некоторым приходится выполнять однотипные простые действия, которые вручную занимают значительное количество времени. Но не стоит забывать, что перед нами стоит мощная вычислительная машина, которая при правильной команде в состоянии выполнить все сама.</p> <p>Самым примитивным способом автоматизации любого действия является создание файла с расширением.BAT, в простонародье именуемого как «батник». Это очень простенький исполняемый файл, который при запуске выполняет заранее заданные действия, после чего закрывается, ожидая следующего запуска (если он многоразовый). Пользователь с помощью специальных команд задает последовательность и количество операций, которые «батник» должен выполнить после запуска.</p> <p>Сделать этот файлик может любой пользователь на компьютере, который имеет достаточно прав для создания и сохранения файлов. На счет выполнения немного сложнее — выполнение «батника» должно быть разрешено как и отдельно взятому пользователю, так и операционной системе в целом (запрет иногда накладывается в целях безопасности, ведь исполняемые файлы не всегда создаются для благих дел).</p> <blockquote><p>Будьте внимательны! Никогда не запускайте на компьютере файлы с расширением.BAT, скачанные из неизвестного или подозрительного ресурса, а также не используйте при создании такого файла код, в котором вы не уверены. Исполняемые файлы такого типа умеют шифровать, переименовывать или удалять файлы, а также форматировать целые разделы.</p> </blockquote> <h3><span>Способ 1: использование расширенного текстового редактора Notepad++ </span></h3> <p>Программа является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.</p> <ol><li>Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись <i>«Создать» </i>, в выпавшем сбоку окошке щелчком левой кнопки мыши выберите <i>«Текстовый документ» </i></li> <p><img src='https://i0.wp.com/lumpics.ru/wp-content/uploads/2017/03/Sozdanie-tekstovogo-dokumenta-s-pomoshhyu-kontekstnogo-menyu-na-rabochem-stole-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <li>На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник. После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт <i>«Edit with Notepad++» </i>. Созданный нами файл откроется в расширенном редакторе.</li> <p><img src='https://i0.wp.com/lumpics.ru/wp-content/uploads/2017/03/Tekstovyiy-dokument-otkryityiy-s-pomoshhyu-rasshirennogo-redaktora-Notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <li>Очень важна роль кодировки, в которой будет исполнена команда. По умолчанию используется кодировка ANSI, которую нужно заменить на OEM 866. В шапке программы нажимаем на кнопку <i>«Кодировки» </i>, нажимаем на аналогичную кнопку в выпавшем меню, затем выбираем пункт <i>«Кириллица» </i> и нажимаем на <i>«OEM 866» </i>. Как подтверждение смены кодировки справа внизу в окне появится соответствующая запись.</li> <p><img src='https://i0.wp.com/lumpics.ru/wp-content/uploads/2017/03/Smena-kodirovki-dokumenta-v-rasshirennom-tekstovom-redaktore-notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <li>Тот код, который вы уже нашли в интернете или написали сами для выполнения определенной задачи, необходимо просто скопировать и вставить в сам документ. На примере ниже будет использована элементарная команда: <p>shutdown.exe -r -t 00</p> <p><img src='https://i0.wp.com/lumpics.ru/wp-content/uploads/2017/03/Vstavka-koda-v-tekstovoe-pole-rasshirennogo-redaktora-Notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <p>После запуска этот батник перезагрузит компьютер. Сама команда означает запуск перезагрузки, а цифры 00 — задержку ее выполнения в секундах (в данном случае она отсутствует, то есть перезапуск выполнится незамедлительно).</p></li> <li>Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт <i>«Файл» </i>, затем нажмите на <i>«Сохранить как» </i>.</li> <p><img src='https://i2.wp.com/lumpics.ru/wp-content/uploads/2017/03/Sohranenie-tekstovogo-dokumenta-Notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <li>Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт <i>«Batch file» </i>. <p><img src='https://i1.wp.com/lumpics.ru/wp-content/uploads/2017/03/Zadanie-formata-fayla-pri-sohranenii-tektovogo-dokumenta-v-rasshirennom-tektovom-redaktore-Notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <p>К уже заданному ранее слову или фразе без пробела допишется <i>«.BAT» </i>, и получится так, как на скриншоте ниже.</p></li> <p><img src='https://i2.wp.com/lumpics.ru/wp-content/uploads/2017/03/Opredelenie-formata-fayla-pri-sohranenii-tektovogo-dokumenta-v-rasshirennom-tektovom-redaktore-Notepad-na-kompyutere-v-operatsionnoy-sisteme-Windows-7.png' align="center" width="100%" loading=lazy></p> <li>После нажатия на кнопку <i>«OK» </i> в предыдущем окне, на рабочем столе появится новый файл, который будет выглядеть как белый прямоугольник с двумя шестеренками.</li> </ol><h3><span>Способ 2: использование стандартного текстового редактора Блокнот </span></h3> <p>Он обладает элементарными настройками, которых вполне хватает для создания самых простых «батников». Инструкция абсолютно аналогична предыдущему способу, программы лишь немного отличаются в интерфейсе.</p> <br><img src='https://i0.wp.com/lumpics.ru/wp-content/uploads/2017/03/Otkryityiy-tekstovyiy-dokument-na-kompyutere-v-operatsionnoy-sisteme-Windows-7-1.png' align="center" width="100%" loading=lazy><p>Оба редактора отлично справляются с созданием батников. Стандартный блокнот больше подходит для простых кодов, в которых используются несложные одноуровневые команды. Для более серьезной автоматизации процессов на компьютере необходимы продвинутые батники, которые с легкостью создаются расширенным редактором Notepad++.</p> <p>Рекомендуется запускать файл.BAT от имени администратора, чтобы не возникало проблем с уровнями доступа к определенным операциям или документам. Количество задаваемых параметров зависит от сложности и назначения задачи, которую необходимо автоматизировать.</p> <p>Пакетный (bat) файл – это тип файла, поддерживающий текст, имеющий расширение.bat, и включающий в себя построчные операторы для командной строки cmd.exe.</p> <p>Этот тип файла – полезный инструмент автоматизации однообразных файловых операций – копирования, удаления и т.д., а также запуска различных приложений и выполнения других операций в ОС.</p> <p>К примеру, если необходимо выполнить DOS-команду ipconfig/flushdns, очищающую кэш распознавателя DNS, это можно сделать через запуск cmd.exe. Однако, если процедуру нужно повторить многократно, лучше сделать это через запуск предварительно созданного bat-файла.</p> <p>При создании файла bat, возможно, потребуется включение отображения файловых расширений. Для этого:</p> <br><img src='https://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Nazhimaem-myshju-pravoj-na-knopke-Pusk-i-vybiraem-Panel-upravlenija-.jpg' width="100%" loading=lazy><p>Для этого:</p> <ol><li>Открыть «Блокнот», набрав в строке поиска панели задач (изображение лупы внизу слева) слово блокнот и щелкнув мышью по всплывшей пиктограмме. <p><img src='https://i0.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Otkryvaem-Bloknot--e1531379677985.jpg' width="100%" loading=lazy></p></li> <li>Вписать в блокноте команды ipconfig /flushdns и pause. <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Vpisyvaem-v-bloknote-komandy.jpg' width="100%" loading=lazy></p> <blockquote><p><i><b>Справка! </b> Использование оператора «pause» не позволяет DOS-экрану закрыться после исполнения bat-файла, чтобы у пользователя была возможность видеть ответ интерпретатора cmd. </i></p> </blockquote></li> <li>В окне блокнота щелкнуть мышью «Файл» – «Сохранить как». <p><img src='https://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Vybiraem-Sohranit-kak-.jpg' width="100%" loading=lazy></p></li> <li>В окне «Сохранить как» щелкнуть слева, куда поместить файл, написать имя создаваемого файла и указать расширение.bat (через точку) (1), выбрав в «Тип файла» – «Все файлы» (2). Затем нажать «Сохранить» (3). <p><img src='https://i0.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/V-okne-Sohranit-kak-nazhimaem-sleva-kuda-pomestit-fajl-pishem-imja-sozdavaemogo-fajla-i-ukazyvaem-rasshirenie-.bat-vybrav-v-Tip-fajla-Vse-fajly-.-Zatem-nazhimaem-Sohranit-.png' width="100%" loading=lazy></p></li> <li>Щелкнуть дважды мышью на сохраненном файле. В отдельных ситуациях может потребоваться запуск bat под именем администратора. Для этого щелкнуть на нем мышью (правой), и выбрать «Запуск от имени администратора».</li> </ol><p><img src='https://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Klikaem-dvazhdy-myshju-na-sohranennom-fajle.jpg' width="100%" loading=lazy></p> <p>Результат исполнения bat-файла отобразиться в DOS-окне.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Rezultat-ispolnenija-bat-fajla.jpg' width="100%" loading=lazy></p> <p>В данном случае содержимое кэш службы разрешения имен DNS успешно очищено, исправляя проблемы отображения интернет-страниц и другие проблемы DNS. Система предлагается нажать любую клавишу для закрытия окна.</p> <blockquote> <p><i>Если вы хотите более подробно узнать, а также рассмотреть инструкцию по созданию, вы можете прочитать статью об этом на нашем портале. </i></p> </blockquote> <h2><span>Основные операторы bat-файла: </span></h2> <ul><li>ECHO: отображает текст в DOS-окне;</li> <li>ECHO OFF: отменяет показ текста команд в DOS-окне, показывая подсказку и выполненный результат;</li> <li>@ECHO OFF: отменяет показ текста команд и подсказок, показывая выполненный результат;</li> <li>XCOPY: используется для копирования каталогов и файлов с добавочными параметрами;</li> <li>START: запускает исполняемый файл.exe со своим стандартным приложением, открывает каталог;</li> <li>FOR/IN/DO: применяется для указания файлов;</li> <li>MKDIR: создает каталоги;</li> <li>REM: для ввода строки комментария в программе;</li> <li>RMDIR: для удаления каталогов;</li> <li>DEL: для удаления файлов;</li> <li>COPY: для копирования файлов;</li> <li>TITLE: редактирование заголовка окна.</li> </ul><p>Применение некоторых из перечисленных команд показано на примере ниже. Необходимо отметить, что команда @echo off скрывает путь выполняемой команды, отображаемый cmd на DOS-экране.</p> <p><img src='https://i0.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Komanda-echo-off-skryvaet-put-vypolnjaemoj-komandy.jpg' width="100%" loading=lazy></p> <p>Запуск программ в файле bat происходит с помощью команды start и указанием имени запускаемой программы.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Zapusk-programm-v-fajle-bat-proishodit-s-pomoshhju-komandy-start.jpg' width="100%" loading=lazy></p> <p>Также в файле может быть прописан полный путь до исполняемого файла.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/V-fajle-propisan-polnyj-put-do-ispolnjaemogo-fajla.jpg' width="100%" loading=lazy></p> <p>Обе эти записи для firefox работают корректно. Однако, они обе корректны только для зарегистрированных в Windows приложений. Если попробовать запустить портативную программу (например, filezilla) без прописи всего пути к запускаемому файлу, она не запустится.</p> <h2><span>Длинные имена в bat-файлах </span></h2> <p>Иногда в bat встречаются программы, не работающие с длинными именами с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.</p> <p>Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через ~. Например: start C:Program FilesMozilla Firefoxfirefox.exe преобразуется в: start C:Progra~1Mozill~1firefox.exe.</p> <p>Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/V-odnom-kataloge-imejutsja-neskolko-papok-s-odinakovymi-simvolami-v-nazvanii-e1531381521905.png' width="100%" loading=lazy></p> <p>Их короткие имена в этом случае должны нумероваться в соответствии с алфавитным порядком папок:</p> <ul><li>Mozill~1;</li> <li>Mozill~2;</li> <li>Mozill~3.</li> </ul><p>Однако, если Mozilla Firefox будет удален с компьютера, следующие за Mozill~1 записи работать не будут. Поэтому, короткие DOS-имена – не лучший вариант решения проблемы длинных имен. Создание имен этого типа на NTFS также бывает отключено в реестре Windows.</p> <p>Для решения проблемы длинных имен запись также может быть заключена в кавычки. Кавычки «», располагающиеся перед прописываемым путем к запускаемому файлу, являются обязательным атрибутом, включающим какой-либо заголовок или только кавычки.</p> <p><img src='https://i0.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Kavychki-raspolagajushhiesja-pered-propisyvaemym-putem-k-zapuskaemomu-fajlu-javljajutsja-objazatelnym-atributom.jpg' width="100%" loading=lazy></p> <p>Однако, в некоторых случаях кавычки не работают совсем. В этом случае возможно использование команды изменения текущего рабочего каталога Chdir (CD). Запись start firefox.exe приобретает в этом случае следующий рабочий вид.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Zapis-start-firefox.exe-priobretaet-rabochij-vid.jpg' width="100%" loading=lazy></p> <p><b>Справка. Команда CD – пожалуй, единственное универсальное решение вопроса длинных имен в bat-файлах. </b></p> <h2></h2> <p>Программы в bat-файле можно не только запускать, но и устанавливать им дополнительные команды (ключи) запуска. Например, если запустить bat-файл с записью: start /?, он отобразит на DOS-экране список используемых с этим оператором ключей с необходимыми пояснениями.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Zapusk-programm-v-bat-fajlah-s-kljuchami.jpg' width="100%" loading=lazy></p> <p>Пример используемых ключей, где: — minimize – ключ для минимизации программы после ее запуска, — hide_splash – ключ для сворачивания программы в трэй.</p> <p><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Primer-ispolzuemyh-kljuchej.jpg' width="100%" loading=lazy></p> <blockquote> <p><i><b>Справка! </b>Все, что относится к запускаемым файлам.exe, записывается с ними в файле bat в общей строке. </i></p> </blockquote> <p>Команда создания папки выполняется в bat с помощью оператора MKDIR (MD). Если запустить приведенный в примере bat-файл, он создаст четыре вложенные папки на диске С.</p> <p><img src='https://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Komanda-sozdanija-papki-vypolnjaetsja-v-bat-s-pomoshhju-operatora-MKDIR.jpg' width="100%" loading=lazy></p> <p>Следующий пример – как открыть не один, а сразу несколько каталогов на диске С.</p> <p><img src='https://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Komanda-dlja-otkrytija-neskolkih-katalogov-na-diske-S.jpg' width="100%" loading=lazy></p> <h2></h2> <p>В приведенном ниже примере показано, как скопировать папку с диска D: на диск E. Параметр /s разрешает копирование каталогов и подкаталогов. Параметр i/ создает новый каталог, чтобы команда xcopy скопировала в него файлы.</p> <p>Базовый файл при этом как остается как на диске D, так и копируется в новое место, указанное в bat-файле.</p> <h2><span>Редактирование bat </span></h2> <br><img src='https://i1.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Pri-pomoshhi-klika-PKM-vybiraem-punkt-Izmenit--e1531384291269.jpg' width="100%" loading=lazy><h3><span>Программы редактирования </span></h3> <p>Рядовому пользователю для взаимодействия с bat-файлами, возможно, хватит функционала простого «Блокнота», но, к примеру, системному администратору нужен редактор помощнее. Работать с bat можно в любых редакторах текстов, нацеленных на взаимодействие с кодом, в частности, в «Notepad++» или «Notepad2».</p> <p>Из специализированного софта можно отметить утилиту Dr.Batcher, специально разработанную для создания bat, и включающую в состав визуальный редактор, подсвечиваемый синтаксис, закладки, специальные команды и нумерацию страниц.</p> <h3><span>Видео — Как создать bat файл в Windows 10 </span></h3> <p><span class="xNOKAR6jcgQ"></span></p> <p>Люди, которым знаком термин батник, знают, что BAT файлы могут существенно упростить жизнь и экономить время, если уметь их правильно писать и использовать. В этой статье я расскажу о том, как создавать BAT файлы и познакомлю вас с распространенными ошибками, которые обычно возникают при их написании.</p><p>Создать BAT файл очень просто. Достаточно открыть блокнот и сохранить пустой лист с расширением .bat , выбрав опцию Сохранить как... и написав в поле Имя файла что-нибудь оканчивающееся на .bat , например test.bat . <br>Тип файла указываете как на скриншоте ниже - Все файлы . Сохраняете и получаете BAT файл.</p> <p>Редактировать BAT файл можно в блокноте или любом другом текстовом редакторе, ориентированным на работу с кодом.</p> <p>Теперь перейдем непосредственно к практической информации. В сети многие ищут ответ на вопрос Как быть с пробелами в BAT файлах? . В путях к папкам и исполняемым файлам наличие пробела вызывает ошибку. Самый распространенный ответ: Заключи путь в кавычки. И этот ответ не верен. Правда некоторые будут с пеной у рта утверждать, что он работает. Итак, появилось два почему - почему не верен и почему некоторые будут.</p> <p>На Windows (как, впрочем, и на UNIX) установленные в системе программы соответствующим образом регистрируются системой. Поэтому некоторые из установленных программ могут запускаться одной простой командой из BAT файла или из апплета Выполнить панели Пуск. Одной из таких программ является Firefox:</p> start firefox <p>Если после этой команды писать путь к исполняемому файлу, то происходит следующее: запускается обозреватель Firefox и пробует обработать запрос, то есть файл, путь к которому указан. То есть, если указать следующее:</p> start firefox C:\Program Files\Mozilla Firefox\firefox.exe <p>Обозреватель откроется, чтобы не было написано после start firefox . Именно поэтому некоторые товарищи будут уверять что все прекрасно работает. Однако, если взять портативную программу, то ситуация окажется совсем иная. Рассмотрим в качестве примера ftp-клиент Filezilla. Поскольку система не знает о программе, вышеупомянутая строчка</p> start filezilla <p>работать не будет. Чтобы запустить неизвестную системе программу, надо указать к ней путь:</p> start D:\FileZilla\FileZilla.exe <h2>Длинныe имена в bat-файлах</h2> <p>Теперь поговорим о путях и пробелах. Первый способ избежать этой проблемы - использование короткого имени.</p> start C:\Program Files\Sound Club\scw.exe <p>В примере два имени с пробелами. Заменим их короткими. Правила создания коротких имен следующие: в коротком имени используются первые шесть символов имени без учета пробелов, после имени указывают порядковый номер папки с помощью символа <b>~ </b>. Так как папки Program Files и Sound Club у меня в единственном числе, получится следующее:</p><p>Program Files - Progra~1 Sound Club - SoundC~1 start C:\Progra~1 \SoundC~1 \scw.exe </p><p>Если рядом будут присутствовать две папки, например Sound Club и Sound Clown , то следуя правилам, в примере выше надо будет указать SoundC~2 , так как в этом случае Sound Club окажется вторым именем (имена считаются в алфавитном порядке).</p> <p>Но этот способ неудобен тем, что приходится указывать порядковые номера. Ситуация с Program files более менее нормальная. Мало у кого встретится две подобные папки на системном диске. Но если вы решили установить несколько продуктов Mozilla на свой компьютер. У вас получится несколько папок, например:</p><p>Mozilla Firefox Mozilla Thunderbird Mozilla Sunbird </p><p>Короткими именами для них будут</p><p>Mozill~1 Mozill~2 Mozill~3 </p><p>А теперь представьте, что вы написали BAT файл с упоминанием этих программ. Если удалить Firefox, оставшиеся записи перестанут работать, а если удалить Thunderbird, перестанет работать запись для Sunbird. Короче, способ с короткими именами - не наш способ.</p> <h2>Пробелы и кавычки в bat-файлах</h2> <p>Кавычки на самом деле работают, но не с теми способами, которые обычно советуют. Советуют обычно следующее:</p> start "C:\Program Files\Sound Club\scw.exe" <p>Так команда не сработает, поскольку если посмотреть справку по ней (start /? ), то в справке вы увидите следующее:</p> START ["заголовок"] [команда/программа] [параметры] <p>Как видите, первым параметром идёт заголовок окна и он как раз в кавычках. Этот параметр необязательный, но его всё же советуют указывать (), чтобы избежать ошибок при выполнении команды. Внутри кавычек можно ничего не писать. Получится так:</p> start "" "C:\Program Files\Sound Club\scw.exe" <p>Также сработает и вариант с заключением в кавычки всех имён с пробелами по отдельности:</p> start C:\"Program Files"\"Sound Club"\scw.exe <p>Однако, в ряде случаев не работает ничего из вышеописанного. В таких случаях я могу посоветовать использовать команду cd . Переходим на системный раздел, затем с помощью cd в папку Program Files и запускаем программу (start ):</p> %SystemDrive% cd \Program Files\Sound Club\ start scw.exe <p>Я думаю, что такой способ будет работать везде. Теперь еще пара важных моментов. Допустим вы создали батник, запускающий три программы и вам нужно на время исключить запуск одной из трех. Это можно сделать удалением строки или ее комментированием. Первый способ - вандальный, а второй смотрите ниже.</p> start firefox start jetaudio rem start defraggler <p>В данном случае отключен запуск установленной в системе программы Defraggler.exe. Комментируют строки, указывая команду rem в начале строки. Все BAT файлы выполняются в окне консоли. Чтобы оно исчезало по окончании выполнения команд, не забывайте в конце писать команду на выход exit. </p> start firefox start jetaudio rem start defraggler exit <h2>Запуск приложений из bat-файла</h2> <p>В первой части статьи я в общих чертах рассказал о BAT файлах. Теперь стало понятно - что это такое и с чем его едят. Во второй части речь пойдет уже о более конкретных вещах. Например, о том, как при помощи BAT файла запустить несколько приложений с определенными настройками или в автоматическом режиме установить программу, чтобы не тратить время на ответы типа Вы согласны с условиями лицензионного соглашения? и не нажимать лишние кнопки.</p> <p>Выше было изложено несколько способов запуска приложений при помощи BAT файла. Самый первый - это короткая команда на запуск установленной в системе программы.</p> start firefox <p>Это не всегда работает. Поэтому такой прием можно вполне применять на какой-то конкретной системе, но в качестве универсального решения он не подходит. Если есть цель заставить работать BAT файл везде и всегда, нужно пользоваться полными путями:</p> start C:\"Program Files"\"Mozilla Firefox"\firefox.exe <p>Также я отметил, что в BAT файле обязательно должна присутствовать команда на завершение:</p> start C:\"Program Files"\"Mozilla Firefox"\firefox.exe exit <h3>Запуск программ в bat-файлах с параметрами (ключами)</h3> <p>Программу можно не просто запускать, а давать ей дополнительные команды при запуске. Например, скомандовать запускаться свернутой:</p> start /min D:\FileZilla\FileZilla.exe exit <p>Скомандовать в данном случае - значит указать ключ. Ключ указывается через слэш после основной команды (команда /ключ ). Основной командой в данном случае является start . Правда ключ min работает только в половине случаев, потому как относится именно к команде запуска start , а не к программам, которые эта команда запускает.</p> <p>Вообще ключей существует очень много и наборы ключей разных программ могут существенно различаться. Есть, правда, несколько общих. Например, ключ справки (/? или /help ). Чтобы проследить работу этого ключа, рассмотрим практический пример. Откройте консоль (Жмёте <b>+ </b> R , вводите cmd , далее Enter ) и набираете в консоли следующее:</p> start /? <p>Консоль выведет на экран перечень допустимых ключей c комментариями для команды start .</p> <p><img src='https://i2.wp.com/nevor.ru/nvfiles/editor/medium/8_cmd_start.png' width="100%" loading=lazy></p> <p>Обратите внимание на ключ /wait . В некоторых случаях он бывает просто незаменим. Например, вы решили с помощью BAT файла распаковать архив с программой и эту самую программу запустить. В батнике получится две команды - на распаковку и на запуск. Поскольку команды при запуске BAT файла выполнятся почти одновременно, архив распаковаться не успеет и запускать будет нечего. Поэтому будет ошибка. В этом случае на помощь придет ключ <b>/wait </b>:</p> <p>Таким образом система сначала выполнит первое действие, дождется его завершения и только после этого приступит ко второму. Если необходимо подождать конкретный отрезок времени, то проще воспользоваться консольной утилитой . В нужном месте BAT файла пишете следующую команду (число - количество секунд):</p> start Sleep.exe 15 <p>С помощью ключей можно делать многое. Есть возможность устанавливать приложения . Для этого используется несколько ключей в зависимости от типа инсталятора, применяющегося для установки программы на компьютер:</p><p> /S /s /q /silent и ряд других </p><p>В ряде случаев бывает очень удобно. Антивирус Avast имеет опцию тихой установки в корпоративной версии. В бесплатной (домашней) версии тихой установки якобы нет. Однако, если вы в курсе как работает инсталятор InstallShield , вы поймете, что это утка, так как этот инсталятор сам по себе поддерживает ключ тихой установки /S . А значит все продукты, выполненные на его базе - тоже. И Avast не исключение. Просто создаете в папке с Avast"ом BAT файл с содержанием</p> start avast.exe /S exit <p>запускаете его и программа устанавливается на компьютер практически без вашего участия. Таким образом можно написать целый список программ для тихой установки и сэкономить время, например, на переустановке системы. В статье можно получить более подробную информацию по ключам.</p> <p>Есть и другие возможности по управлению программами при помощи BAT файлов. Можно запустить программу, приказав ей открыть файл при запуске. Я пользуюсь этим способом при разработке сайтов. Очень удобно, когда весь твой инструментарий открывает нужные документы и папки нажатием всего одной кнопки:</p> <span>rem соединение с ftp-сервером </span> start /min D:\FileZilla\FileZilla.exe "ftp://логин:пароль@сервер" <span>rem открытие index.php в Firefox </span> start C:\"program files"\"mozilla firefox"\firefox.exe "http://localhost/папка_сайта/index.php" <span>rem открытие start.html в текстовом редакторе </span> start /min C:\"Program Files"\текстовой_редактор.exe "E:\сервер\папка_сайта\index.html" <span>rem открытие папки с файлами сайта </span> start /min E:\сервер\папка_с_сайтом <span>rem выход из консоли </span> exit <p>Отмечу, что все вышеописанные приемы можно применять в различных комбинациях и сочетаниях.</p> start /min /wait program.exe /m /S start C:\Directory\program2.exe "C:\Files\file.odt" exit <p>Но важно помнить: всё, что касается выполнения запускаемой в батнике программы, пишется с ней в одной строке.</p> start C:\"program files"\"mozilla firefox"\firefox.exe "http://localhost/папка_сайта/index.php" <p>В качестве эпилога предложу для ознакомления конвертер BAT файлов в приложения формата .exe - . BAT файл - это не всегда эстетично, а с помощью конвертера можно запаковать батник в exe"шник, оформив его любой иконкой на ваш выбор.</p> <p>Наткнулся ещё на один конвертер BAT в EXE, можете рассмотреть в качестве альтернативы предыдущей программе: Advanced Bat To Exe Converter</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> <div class="clear"></div> </div> </article> <div class='yarpp-related'> <section id="related_posts"> <div class="block-head"> <span>Больше информации по теме</span> <div class="stripe-line"></div> </div> <div class="post-listing"> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/2149de5b0a55068109f0b44c11d741b3.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Яндекс Пипл — поиск людей в соц" / loading=lazy></div> <a class="post_7839" href="/kak-naiti-cheloveka-v-internete-samye-prostye-metody-yandeks-pipl-poisk-lyudei-v/">Яндекс Пипл — поиск людей в соц</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/14804da2c8935d3aeddfb0e10957d20d.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Исправляем проблемы с загрузчиком используя командную строку" / loading=lazy></div> <a class="post_7839" href="/fixboot-smogla-naiti-sistemnyi-disk-ispravlyaem-problemy-s/">Исправляем проблемы с загрузчиком используя командную строку</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/d0db4e02378ad6b5b4953112dac80a72.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Украли телефон - что делать?" / loading=lazy></div> <a class="post_7839" href="/ukrali-telefon---chto-delat-kak-otsledit-telefon-kak-naiti/">Украли телефон - что делать?</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/b74e9d30305c73622b2ca923e829131f.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Bootstrap - Создание галереи изображений" / loading=lazy></div> <a class="post_7839" href="/menyayushchiesya-fotografii-v-setke-jquery-bootstrap---sozdanie-galerei-izobrazhenii/">Bootstrap - Создание галереи изображений</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/f53f780e3202488bef1a4da82abf5f64.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Как сделать автообновление страницы в яндекс браузере Автообновление в Opera" / loading=lazy></div> <a class="post_7839" href="/avtoobnovlenie-stranicy-v-brauzere-kak-sdelat-avtoobnovlenie-stranicy-v-yandeks/">Как сделать автообновление страницы в яндекс браузере Автообновление в Opera</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/5a2d59797697e8ee393a793dcd631195.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="Как сделать приложение или игру для андроид Способы и стоимость создания приложения" / loading=lazy></div> <a class="post_7839" href="/razrabotka-android-prilozhenii-osnovnye-instrumenty-kak-sdelat/">Как сделать приложение или игру для андроид Способы и стоимость создания приложения</a></div> </div> </section> </div> <div id="comments"> <ol class="commentlist"> <div class='rreekk' rel='15'> <div id="smartrotator_ad_4" onclick="yaCounter40492595.reachGoal ('tizercommentbefore1'); return true;"></div> </div> </ol> <div class="clear"></div> <div id="respond" class="comment-respond"> </div> </div> </div> <aside id="sidebar"> <div class="theiaStickySidebar"> <div class="execphpwidget"> <div id="text-4" class="widget widget_text"> <div class="widget-top"> <span>Полезное</span> <div class="stripe-line"></div> </div> <div class="widget-container"> <div class="textwidget"> <style> .wpp-list li img { -webkit-border-radius: 65px; -moz-border-radius: 65px; border-radius: 65px; } .wpp-list li .post-views { display: block; margin-left: 70px; color: #828283; font-size: 12px; } .wpp-list li .post-views i { font-size: 13px; } .wpp-list li { line-height: 22px !important; } .replacemy { cursor: pointer; } } </style> <ul class="wpp-list"> <li> <div class="replacemy"><img src="/uploads/94f5519ca237e87c01dbae1bd1314479.jpg" width="65" height="65" title="Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв" alt="Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/v-dokumentah-vmesto-teksta-otobrazhayutsya-ieroglify-chto-delat-esli-vmesto/" class=""><br>Что делать, если вместо текста иероглифы (в Word, браузере или текстовом документе) Непонятные иероглифы вместо букв</a></li> <li> <div class="replacemy"><img src="/uploads/676f48b5f6d021bdc3d89bee705135d7.jpg" width="65" height="65" title="Часы пропеллер на pic16f628a своими руками" alt="Часы пропеллер на pic16f628a своими руками" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/chasy-propeller-na-pic16f628a-svoimi-rukami-chasy-boba-blika-chasy/" class=""><br>Часы пропеллер на pic16f628a своими руками</a></li> <li> <div class="replacemy"><img src="/uploads/3717c2a058018e21f48abfc24ef969e2.jpg" width="65" height="65" title="Почему Не работает вентилятор на ноутбуке!" alt="Почему Не работает вентилятор на ноутбуке!" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/kompyuter-ne-vklyuchaetsya-no-ventilyatory-sistemnogo-bloka-rabotayut-pochemu-ne/" class=""><br>Почему Не работает вентилятор на ноутбуке!</a></li> <li> <div class="replacemy"><img src="/uploads/9639f33d2a4dc30cfae59fe9bc04e261.jpg" width="65" height="65" title="Калорийность, химический состав и пищевая ценность" alt="Калорийность, химический состав и пищевая ценность" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/recept-morkov-po-koreiski-kaloriinost-himicheskii-sostav-i-pishchevaya/" class=""><br>Калорийность, химический состав и пищевая ценность</a></li> <li> <div class="replacemy"><img src="/uploads/e8d1bcbcf38a224a1ea68181a334123c.jpg" width="65" height="65" title="Почему картридж может течь после заправки Что делать если картридж подтекает" alt="Почему картридж может течь после заправки Что делать если картридж подтекает" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy></div><a href="/vozmozhnye-neispravnosti-kartridzhei-struinyh-printerov-i/" class=""><br>Почему картридж может течь после заправки Что делать если картридж подтекает</a></li> </ul> </div> </div> </div> </div> </div> <div> </div> </aside> <div class="clear"></div> </div> <footer id="theme-footer"> <div id="footer-widget-area" class="wide-narrow-2c"><div id="footer-first" class="footer-widgets-box"><div id="text-2" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"> <p>Все о современной технике. Ошибки. Игры. Поломки. Техника. Интернет <p></p> </div></div></div></div><div id="footer-second" class="footer-widgets-box"><div id="text-3" class="footer-widget widget_text"> <div class="footer-widget-top"></div> <div class="footer-widget-container"> <div class="textwidget"><a href="/sitemap.xml">Карта сайта</a></div> </div> </div><div id="text-7" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"><br> <a href="/feedback/">Обратная связь</a> </div></div></div></div></div><div class="clear"></div> </footer> <div class="clear"></div> <div class="footer-bottom"> <div class="container"> <div class="alignright"></div> <div class="alignleft"> © Copyright 2024, https://qzoreteam.ru</div> <div class="clear"></div> </div> </div> </div> </div> </div> <div id="topcontrol" class="fa fa-angle-up" title="Перейти к началу страницы"></div> <div id="fb-root"></div> <script type="text/javascript"> jQuery(function($) { $(document).on("click", ".pseudo-link", function() { window.open($(this).data("uri")); }); }); </script> <script type='text/javascript'> /* */ var tocplus = { "smooth_scroll": "1", "visibility_show": "\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0441\u043a\u0440\u044b\u0442\u044c", "width": "310px" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-polls/polls-js.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript'> /* */ var tie = { "mobile_menu_active": "true", "mobile_menu_top": "", "lightbox_all": "", "lightbox_gallery": "", "woocommerce_lightbox": "", "lightbox_skin": "dark", "lightbox_thumb": "vertical", "lightbox_arrows": "true", "sticky_sidebar": "", "is_singular": "1", "SmothScroll": "true", "reading_indicator": "", "lang_no_results": "\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c", "lang_results_found": "\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/tie-scripts.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/ilightbox.packed.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript'> /* */ var gglcptch_pre = { "messages": { "in_progress": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Google reCAPTCHA.", "timeout": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Google reCAPTCHA. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0412\u0430\u0448\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0442\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443." } }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/pre-api-script.js'></script> <script type='text/javascript' data-cfasync="false" async="async" defer="defer" src='https://www.google.com/recaptcha/api.js?onload=gglcptch_onload_callback&render=explicit'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/script.js'></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/my.js"></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/etimer.js"></script> </body> </html>