Простые bat файлы. Написание BAT файлов. Примеры пакетных файлов Windows

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://i1.wp.com/syl.ru/misc/i/ai/324915/1862019.jpg' width="100%" loading=lazy></p><p>4. Cls очищает командную строку. Используется для того, чтобы предыдущий вывод <a href="/luchshaya-blokirovka-ekrana-dlya-android-blokirovka-ekrana-na-android-kak/">постороннего кода</a> на помешал просмотру хода выполнения текущего скрипта.</p><p>5. Color задает цвет шрифта и фона. Например, <a href="/komanda-zamenit-cvet-replace-color-v-fotoshope-menyaem-cvet-obektov/">команда color</a> f9 задает белые буквы на <a href="/rgb-kod-krasnogo-cveta-zapisyvaetsya-kak-kak-izmenit-cvet-teksta-html-i-css/">синем фоне</a>. Команда без параметра восстанавливает установки по умолчанию.</p><p>6. Echo служит для вывода информации, а также включения (echo on) или выключения (echo off) такого вывода. Например, <a href="/sozdanie-paketnyh-failov-primenyaemye-komandy-v-bat-failah/">команда echo</a>. выводит <a href="/1s-8-kak-operacii-so-strokoi-novye-funkcii-raboty-so-strokami/">новую строку</a> без точки, а echo . - точку. Без параметров команда выводит на экран информацию о своем текущем статусе - echo on или echo off.</p><p>7. Rem обеспечивает ту же функциональность, что и тег <! в HTML. Такая строка не является частью выполняемого кода. Вместо этого она служит для пояснения и предоставления информации о нем.</p><p>8. Pause позволяет прервать выполнение команд bat-файла. Это дает возможность прочесть выполненные строки перед продолжением программы. При этом на экран выводится сообщение «Для продолжения нажмите любую клавишу...».</p><p>9. Set позволяет просмотреть или установить переменные окружения. С ключом /p команда запрашивает у пользователя ввод и сохраняет его. С параметром /а она дает возможность выполнять простые <a href="/operacii-nad-primitivnymi-tipami-v-java-arifmeticheskie-operacii/">арифметические операции</a>, также присваивая их результат переменной. При операциях со строками не должно быть пробелов ни до, ни после знака равенства. Например, команда set выводит на дисплей список переменных окружения, set HOME - значения аргументов, начинающихся с “HOME”, а set /p input=введите целое: запрашивает ввод целого числа и присваивает его соответствующей переменной.</p><p>10. Start "" [веб-сайт] запустит заданный веб-сайт в веб-браузере, используемом по умолчанию.</p><p>11. If служит для проверки определенного условия. Если оно истинно, то выполняется следующая за ним команда. Условия бывают 3 видов:</p><ul><li>ERRORLEVEL число - проверка кода завершения последней выполненной инструкции на соответствие или превышение указанного числа. При этом 0 обозначает успешное выполнение задачи, а любое другое число, обычно положительное, сообщает об ошибке. Например, можно использовать вложенные команды для <a href="/chto-takoe-vysokochastotnye-zaprosy-srednechastotnye-zaprosy/">точного определения</a> кода завершения: if errorlevel 3 if not errorlevel 4 echo произошла ошибка №3.</li><li>Строка1 == строка2 - проверка совпадения двух строк. Например, при отсутствии <a href="/luchshie-zhestkie-diski-1-tb-kakoi-firmy-luchshe-vybrat-vneshnii/">внешнего параметра</a> команда if "%1"= ="" goto ERROR передаст управление метке ERROR.</li><li>EXIST имя - проверка существования файла с <a href="/ne-udaetsya-naiti-fail-proverte-pravilno-li-ukazano-imya-i/">указанным именем</a>. Например, if not exist A:\program.exe COPY C:\PROJECTS\program.exe A: копирует программу program.exe на диск А, если ее там нет.</li> </ul><p>12. Else должна находиться в одной строке с командой If. Указывает на необходимость выполнения <a href="/kak-perepisat-kontakty-chtoby-skopirovat-kontakty-s-telefona-na-kompyuter/">следующей инструкции</a>, если выражение окажется ложным.</p><p><img src='https://i0.wp.com/syl.ru/misc/i/ai/324915/1862021.jpg' width="100%" loading=lazy></p><p>13. For используется для повторения <a href="/polnaya-nastroika-routera-zyxel-keenetic-neobhodimo-vypolnit-opredelennye/">определенных действий</a> с каждым членом списка. Имеет формат 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. Двоеточие (:) перед словом образует из него ссылку, которая позволяет пропускать часть <a href="/tegi-prednaznachennye-dlya-vyvoda-chastei-programmnogo-koda-html-programmnyi/">программного кода</a> или возвращаться назад. Используется с командами Call и Goto, указывая, с какого места следует продолжать выполнение bat-файла, например, при выполнении определенного условия:</p><p>15. Переменные:</p><ul><li>%%a обозначает каждый файл в папке;</li><li>%CD% - текущая директория;</li><li>%DATE% - системная дата, формат которой зависит от локализации;</li><li>%TIME% - <a href="/sbivaetsya-sistemnoe-vremya-sbivaetsya-vremya-na-kompyutere/">системное время</a> в виде ЧЧ:ММ:СС.мм.;</li><li>%RANDOM% - сгенерированное <a href="/generator-psevdosluchainyh-chisel-random-generatory-psevdosluchainyh-posledovatelnostei/">псевдослучайное число</a> в диапазоне от 0 до 32767;</li><li>%ERRORLEVEL% - код завершения, возвращаемый последней выполненной командой или bat-скриптом.</li> </ul><p>Извлечь часть строки, которая содержится в переменной, при известном ее положении и длине можно так:</p><p>%[переменная]:~[начало],[длина]%. Например, показать дату в формате ДД/ММ/ГГГГ как ГГГГ-ММ-ДД можно так: echo %DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%.</p><p>16. (". \") - <a href="/kak-naiti-kornevuyu-papku-fleshki-gde-nahoditsya-kornevaya-papka-fleshki/">корневая папка</a>. При работе с консолью перед изменением имени файла, его удалением и т. д. необходимо направить действие команды в конкретный каталог. При использовании пакетного файла достаточно запустить его в любом нужном каталоге.</p><p>17. %цифра - принимает значения параметров, <a href="/mozhno-li-vyvesti-golosa-iz-vkontakte-peredaem-golosa-drugim/">передаваемых пользователем</a> в bat-файл. Могут разделяться пробелами, запятыми или двоеточиями. «Цифра» представляет собой число от 0 до 9. Например, %0 принимает значение текущей команды. %1 соответствует первому параметру и т. д.</p><p>18. Shift - команда, используемая для смещения <a href="/kak-ustranit-nesootvetstvie-parametrov-vhodnoi-seti-specificheskie-trebovaniya-directaccess/">входных параметров</a> на одну позицию. Применяется, когда пакетному файлу передаются внешние аргументы. Например, следующий 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: - производит поиск в директориях, перечисленных в <a href="/net-prav-dlya-zapuska-trebuemogo-vida-klienta-zapusk-programmy-bez-prav/">переменной окружения</a> 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>Например, <a href="/sortirovka-po-date-komanda-dir-spravka-po-komande-dir-i-ee/">команда dir</a> *.txt выводит список txt-файлов, а dir ???.txt - перечень <a href="/the-main-formats-for-storing-text-documents-text-formats-and-text-file-editors/">текстовых документов</a>, длина имени которых не превышает 3 букв.</p><h2>Функции</h2><p>Как и подпрограммы, они эмулируются с помощью команд call, setlocal, endlocal и меток. Следующий пример демонстрирует возможность определения переменной, в которой сохраняется результат, в строке вызова:</p><p>call:say result=world</p><p><img src='https://i2.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. Синтаксис напоминает язык программирования Си. К <a href="/jquery-umnozhenie-chisel-arifmeticheskie-operatory-v-javascript-kodirovka/">арифметическим операторам</a> относятся: *, /, %, +, -. В bat-файле % (остаток целочисленного деления) должен вводиться как “%%”.</p><p>Операторы с <a href="/tablica-perevoda-chisel-iz-dvoichnoi-sistemy-v-vosmerichnuyu-perevod/">двоичными числами</a> интерпретируют число как 32-битную последовательность. К ним относятся: ~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). <a href="/operatory-otnosheniya-i-logicheskie-operatory-peremennye-operacii/">Логическим оператором</a> отрицания является! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0. Оператором комбинирования служит, (запятая), которая позволяет производить <a href="/kak-okruglit-chislo-v-bolshuyu-storonu-kak-okruglit-chislo-v-excel/">большее число</a> операций в одной <a href="/komanda-set---rabota-s-peremennymi-sredy-windows-peremennye-sredy/">команде set</a>. Комбинированные операторы присваивания += и -= в выражениях 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://i2.wp.com/syl.ru/misc/i/ai/324915/1862017.jpg' width="100%" loading=lazy></p><h2>Шаг 3: запись и запуск bat-файла</h2><p>Следующий скрипт намного упростит ежедневную онлайн-активность. Что делать, если есть желание мгновенно открыть все свои любимые новостные сайты? Поскольку скрипты используют команды консоли, то можно создать сценарий, который открывает каждую новостную ленту в одном окне браузера.</p><p>Далее следует повторить процесс <a href="/kak-sozdat-tekstovyi-dokument-bat-kak-sozdat-bat-fail-programmy-dlya/">создания bat</a>-файла, начав с пустого текстового документа. Для этого необходимо щелкнуть правой кнопкой мыши на пустом месте в какой-либо папке и выбрать пункт «Создать», а затем - «Текстовый документ». После открытия файла требуется ввести следующий скрипт, который запускает основные русскоязычные средства массовой информации, доступные в Интернете:</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>Bat-файлами принято называть текстовые файлы, которые сохраняются с использованием расширения bat. Они вмещают в себя список команд для моментального выполнения интерпретатором command.com и cmd.exe. Данные интерпретаторы появились еще в <a href="/pervye-sistemnye-programmy-proobraz-operacionnoi-sistemy/">операционной системе</a> DOS, однако не потеряли своей актуальности для XP и . Самой распространенной задачей <a href="/pereimenovat-gruppu-failov-paketnoe-gruppovoe-pereimenovanie-failov/">пакетных файлов</a> является запись конкретных рутинных команд, постепенное выполнение которых дает возможность избежать часто повторяемых операций. Это, в свою очередь, способствует значительному ускорению обработки данных.</p> <p>Не проще говоря, batch - это пакетный dos-файл, который содержит в себе набор DOS-команд в виде ASCII. А проще - это скрипт, который выполняется интерпретатором command.com либо cmd.exe.</p> <p>Таким образом, в любой операционной системе Windows можно открывать любые файлы или приложения с помощью созданного bat-файла. Пользу от таких файлов можно увидеть на примере autoexec.bat, который является одним из командных файлов. В начале запуска и инициализации системы, вместе с обработкой config.sys, операционная система будет искать в корневом каталоге диска С: файл autoexec.bat, что означает его автоматическую обработку без каких-либо усилий со стороны человека. В данный файл удобно размещать нужные команды по настройке системы на ваше усмотрение.</p> <p><b>Поясняю </b>: после прочтения этой статьи, ты сможешь писать программы, которые удаляют системные файлы, и т.д. Главное, тебе для этого понадобится только блокнот и прямые руки, никаких компиляторов и дебагеров не требуется (батчи не такие примитивные, как тебе кажется, даже есть вирусогенераторы на них написанные).<br> И ещё. Я не буду описывать все возможные флаги (параметры) каждой команды, только наиболее полезные.</p> <p>Бат файлы тоже помогут при создании Autorun"ов. Например, если ваш автозапуск выполнен в виде веб страницы, тогда вам придется прописать в файле Autorun.inf такие строки:<br> OPEN=\путь\имя_файла.bat а уже в бат файле прописать такие строки: start \путь\имя фала.html <br> Во первых хочу сразу сказать, что файлы имеющих расширение bat, cmd, reg имеют широкое применение и большие возможности, хоть они уже и не в моде. Скажу хотя бы, что первые два указанные выше расширения, это не что иное, как скомпилированные команды DOS. С помощью этих команд с лёгкостью пишутся вирусы особенно в файлах с расширением.reg (файлы реестра, а реестр, как известно хранит в себе все настройки операционной системы).</p> <p>Хочу заметить, что приёмы с прописыванием команд в файл Autoexec.bat в ОС Windows 2000 и выше не всегда проходят, потому как в этих операционных системах на этот счет стоит защита, но с помощью записи в файле с расширением *.reg её можно легко снять. На всякий случай, если чувствуешь что у тебя вместе с системой запускается какой-то вирь, нажми клавиши Win+R и набери в появившемся диалоговом окне команду <i>msconfig </i>, зайди на вкладку Автозапуск (Autorun) и поубирай галочки над теми запускаемыми программами, которые тебе "мешают".</p> <p>Весь список команд в bat файлах можно увидеть, написав в командной строке «<i>help </i>». Появятся команды bat файлов, с короткими пояснениями к каждой из них. Для получения более детальной информации по необходимой команде нужно написать в командной строке «<i>help </i>» и имя команды.</p> <h2>Возможности bat</h2> <h3>Простые команда batch-файлов</h3> <p>echo off запрещение вывода на экран исполняемых команд (on - вкл.)<br> deltree /y %файл% удалить файл (/y означает "удалить без вопросов"). Кстати, в NT работает только <i>del </i> (флаг /y не нужен).<br> copy %путь\файл% %куда\файл% cкопировать файл<br> mkdir %название_диры% создать директорию<br> echo %текст% вывести текст на экран<br> echo %текст% > %путь\файл% создать файл и вписать в него текст<br> echo %текст% >> %путь\файл% добавить текст в уже существующий файл<br> if exist %путь\файл% %команда% если существует файл, выполнить команду<br> attrib %атрибут% %путь\файл% поставить\убрать атрибуты файлу (+-h скрытый, +-s системный, +-r только чтение)<br> start %путь\файл% запустить файл<br> cls очистить экран<br> pause выводит сообщение "<i>Нажмите любую кнопку... </i>"<br> label %новая_метка% поставить новую метку системного диска (диск С)<br> format %диск%: /q быстрое форматирование диска:) Несколько секунд<br> ren %путь\файл% %новое_название_файла% переименовать файл<br> goto %метка% перескочить с одного места кода на метку</p> <h3>Непростые фишки bat-файлов и хитрости</h3> <ul><li>Подобие таймера (на n секунд задерживает выполнение последующих команд)<br> choice /N /T:y,%сек% > nul</li> <li>Запрещение вывода на экран самой команды и результата её действия (полезно при команде "copy"). Пример: copy c:\some.exe %windir%\some.exe > nul<br> %команда% > nul</li> <li>Добавить ключи в реестр из файла без вопросов<br> regedit /s %путь\файл.reg%</li> <li>Запустить файл в свёрнутом окне<br> start /m /w %путь\файл%</li> <li>Слышал про файл Autoexec.bat? Знаешь, что он грузится вместе с компом? Наверное, да. Так вот, он имеет расширение BAT. На что я намекаю? На то, что ты можешь в него прописать строчку хитросделанного кода. Это я к тому, что любой скрипт, вставленный в этот файл, будет выполнен при загрузке компа. Также можешь создать в каталоге с виндой файл winstart.bat. Он также запуститься виндоус.</li> <li>Это относиться как раз к фишке с Autoexec. К примеру, если ты положишь в каталог Windows\command файл к примеру "load.bat" (наверное, с плохим содержанием), а из autoexec"a подгрузить свой батничек. И это ещё отстой.. Ты сможешь загружать эти файлы такой строчкой: "load keybrd32.sys" или такой: "load VideoAdapter32.drv -- By windows setup --". Вряд ли такие строчки рискнёт удалять какая-нибудь лама, и твой файл без проблем загрузится.</li> <li>После выполнения этого скрипта в переменной %drv% будет прописан диск с Виндой и с Programm Files<br> if exist c:\Progra~1 set drv=c:<br> if exist d:\Progra~1 set drv=d:<br> if exist d:\Progra~1 set drv=e:</li> <li>В переменной %windir% хранится каталог с виндусом в таком виде: диск:\название_каталога. Пример:<br> copy c:\some.exe %windir%\some.exe</li> <li>Batch скрипты не любят длинные, либо состоящие из двух слов, названия. Длинные урезаются до 6-ти букв (после них должно стоять "~1", к примеру "Program Files -> Progra~1"). Пробелы он просто убирает (The Bat -> TheBat~1).<br> Это я к тому, что в бачах обращайся к файлам по их досовским названиям. Пример:<br> copy c:\some.exe c:\Progra~1\some.exe (копируется файл в <a href="/v-chem-raznica-mezhdu-papkami-program-files-x86-i-program-files-v-windows-mozhno-li-udalit/">папку Program</a> Files)</li> <li>Этот скрипт выводит на экран Windows-окошко (посредством JS) с твоим сообщением и кнопкой ОК<br> echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js<br> echo WSHShell.Popup("твой_текст"); >> %temp%\mes.js<br> start %temp%\mes.js<br> deltree /y %temp%\mes.js</li> </ul><h2>Злоключение</h2> <p>Ну что, мои уважаемые кулхацкеры, это лишь вершина айсберга. Я вас уверяю, если соображалка у вас хорошо работает, делов вы сможете наделать всяких. В своих ухищрениях также можно задействовать VBS. А самораспоковывающие RAR - еще <a href="/kak-pochistit-istoriyu-v-novom-skaipe-chistim-vsyu-istoriyu-stiranie/">отдельная история</a>. При должном навыке вы сможете все это совместить и наказывать, наказывать и еще раз наказывать =)</p> <p>Пакетный (bat) файл – это тип файла, поддерживающий текст, имеющий расширение.bat, и включающий в себя построчные операторы для командной строки cmd.exe.</p> <p>Этот тип файла – <a href="/elementy-yandeksa-dlya-brauzera-mozilla-firefox-elementy-yandeksa-poleznye/">полезный инструмент</a> автоматизации однообразных <a href="/failovaya-sistema-chto-eto-tipy-failovyh-sistem-operacii-s-failami/">файловых операций</a> – копирования, удаления и т.д., а также запуска <a href="/uluchshit-bystrodeistvie-windows-10-udalyaem-razlichnyi-musor-na/">различных приложений</a> и выполнения других операций в ОС.</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://i1.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>В окне «Сохранить как» щелкнуть слева, куда поместить файл, написать имя <a href="/sozdaem-elf-fail-s-otladochnoi-informaciei-dwarf-vruchnuyu-dlya/">создаваемого файла</a> и указать расширение.bat (через точку) (1), выбрав в «Тип файла» – «Все файлы» (2). Затем нажать «Сохранить» (3). <p><img src='https://i2.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>Щелкнуть дважды мышью на сохраненном файле. В отдельных ситуациях может потребоваться <a href="/kak-sozdat-bat-fail-dlya-servera-minecraft-ustanovka-servera-minecraft-windows/">запуск bat</a> под именем администратора. Для этого щелкнуть на нем мышью (правой), и выбрать «Запуск от имени администратора».</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://i2.wp.com/pc-consultant.ru/wp-content/uploads/2018/07/Rezultat-ispolnenija-bat-fajla.jpg' width="100%" loading=lazy></p> <p>В <a href="/kak-zashchitit-dannye-na-smartfone-zashchita-lichnyh-dannyh-na/">данном случае</a> содержимое кэш службы разрешения имен DNS успешно очищено, исправляя проблемы отображения интернет-страниц и другие <a href="/dns-adres-servera-chto-delat-chto-delat-esli-ne-otvechaet-dns-server/">проблемы DNS</a>. Система предлагается нажать любую клавишу для закрытия окна.</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 со своим <a href="/udalit-prilozhenie-ios-9-3-3-kak-udalit-prilozhenie-s-iphone-kak-ustanovit/">стандартным приложением</a>, открывает каталог;</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://i0.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>Также в файле может быть прописан <a href="/chto-takoe-prostranstvo-imen-klassy-i-prostranstva-imen-dlya-etogo-neobhodimo/">полный путь</a> до исполняемого файла.</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 работают корректно. Однако, они обе корректны только для зарегистрированных в <a href="/prilozhenie-wordpress-dlya-windows-prilozhenie-wordpress-dlya-windows/">Windows приложений</a>. Если попробовать запустить <a href="/sozdanie-portativnyh-programm-s-ispolzovaniem-prilozheniya-enigma/">портативную программу</a> (например, filezilla) без прописи всего пути к запускаемому файлу, она не запустится.</p> <h2><span>Длинные имена в bat-файлах </span></h2> <p>Иногда в bat встречаются программы, не работающие с <a href="/ukazano-slishkom-dlinnoe-imya-faila-otkryt-esli-ne-udalyaetsya-fail-s/">длинными именами</a> с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.</p> <p>Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через ~. Например: start C:Program Files<a href="/ne-zapuskaetsya-mozilla-firefox-brauzer-mozilla-firefox-ne-zapuskaetsya-osnovnye-sposoby/">Mozilla Firefox</a> firefox.exe преобразуется в: start C:Progra~1Mozill~1firefox.exe.</p> <p>Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.</p> <p><img src='https://i0.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>Их <a href="/korotkoe-imya-dlya-vk-samye-prikolnye-niki-dlya-parnei-i-malchikov-aleksandr/">короткие имена</a> в этом случае должны нумероваться в соответствии с <a href="/pochemu-nabor-klavish-qwerty-klaviatury-ne-v-alfavitnom-poryadke-raskladka-qwerty-ili/">алфавитным порядком</a> папок:</p> <ul><li>Mozill~1;</li> <li>Mozill~2;</li> <li>Mozill~3.</li> </ul><p>Однако, если Mozilla Firefox будет удален с компьютера, следующие за Mozill~1 записи работать не будут. Поэтому, короткие DOS-имена – не <a href="/otkrytie-fb2-na-kompyutere-chem-otkryt-fb2-i-kak-pravilno-ispolzovat/">лучший вариант</a> решения проблемы длинных имен. Создание имен этого типа на 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 – пожалуй, единственное <a href="/oshibki-v-rabote-play-market-i-ih-reshenie-universalnye-sposoby/">универсальное решение</a> вопроса длинных имен в bat-файлах. </b></p> <h2></h2> <p>Программы в bat-файле можно не только запускать, но и устанавливать им <a href="/dopolnitelnyi-trafik-interneta-megafon-komanda-regionalnye-dopolnitelnye-trafiki-i-komandy-dlya-n/">дополнительные команды</a> (ключи) запуска. Например, если запустить bat-файл с записью: start /?, он отобразит на DOS-экране список используемых с этим оператором ключей с необходимыми пояснениями.</p> <p><img src='https://i0.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://i2.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://i0.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://i1.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/ создает <a href="/otvyazat-uzel-ot-rib-1s-8-3-dlya-klient-serverov-otklyuchit-bazy-cherez-administrirovanie-servera-i/">новый каталог</a>, чтобы <a href="/utilita-xcopy-ili-kak-skopirovat-papku-v-komandnoi-stroke-komanda-xcopy--/">команда xcopy</a> скопировала в него файлы.</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-файлами, возможно, хватит функционала простого «Блокнота», но, к примеру, <a href="/sistemnyi-administrator-umer-da-zdravstvuet-sistemnyi-administrator/">системному администратору</a> нужен редактор помощнее. Работать с bat можно в любых редакторах текстов, нацеленных на взаимодействие с кодом, в частности, в «Notepad++» или «Notepad2».</p> <p>Из <a href="/kak-snyat-zashchitu-ot-zapisi-s-fleshki-poshagovaya-instrukciya/">специализированного софта</a> можно отметить утилиту Dr.Batcher, специально разработанную для создания bat, и включающую в состав <a href="/izvestnye-redaktory-vizualnogo-konstruirovaniya-obshchee/">визуальный редактор</a>, подсвечиваемый синтаксис, закладки, <a href="/skidyvaem-poproshaiku-s-bilaina-specialnaya-komanda-drugie-operatory-kak-s/">специальные команды</a> и нумерацию страниц.</p> <h3><span>Видео — Как создать bat файл в Windows 10 </span></h3> <p><span class="xNOKAR6jcgQ"></span></p> <p><b>Писать bat-файлы может каждый! </b></p><p><b>Командный процессор </b></p><p>В состав многих операционных систем, в том числе, разработанных <a href="/kogda-vyidet-novyi-windows-centr-resheniya-problem-pochemu-mnogie-hotyat-chtoby/">корпорацией Microsoft</a>, входит <a href="/centos-prosmotr-zagruzki-processora-iz-komandnoi-stroki-faily-i-katalogi/">командный процессор</a>. Так называется программа, которая инициирует выполнение всевозможных действий в ответ на команды, вводимые пользователем с клавиатуры. В основном эти действия заключаются в запуске <a href="/luchshie-programmy-nuzhnye-dlya-kompyutera-kakie-programmy-ya-ustanavlivayu-na/">нужных программ</a> с теми или иными параметрами. Но не только; дальше мы увидим, что некоторые команды выполняются непосредственно командным процессором. В основном это те команды, которые служат для управления контекстом и последовательностью выполнения команд. Однако мы не будем особенно глубоко задумываться о природе команд, во всяком случае, без необходимости. Важнее другое: любая программа, которую технически возможно запустить из командной строки, рассматривается командным процессором как команда. Он не делает различий между «родными» командами, изначально встроенными в операционную систему, и программами, которые были установлены поверх нее.</p><p>Для того чтобы запустить командный процессор:</p><ol><p>Нажмите на кнопку <b>Пуск </b>. На экран будет выведено главное меню.</p><p>Выберите в главном меню пункт Выполнить. На экран будет выведено диалоговое окно <b>Запуск программы </b>.</p><p>В поле Открыть введите строку <b>cmd </b>.</p><p>Нажмите на кнопку <b>OK </b>. На экран будет выведено окно командного процессора.</p> </ol><p><b>Командная строка и команды </b></p><p>Окно командного процессора в первозданном виде выглядит мрачно, и работать с ним большинству людей не очень удобно. Намного проще пользоваться <a href="/kakaya-programma-ne-yavlyaetsya-failovym-menedzherom-failovyi-menedzher/">файловыми менеджерами</a> в стиле <a href="/skachat-ustanovochnyi-disk-norton-commander-menedzher-norton-commander-alternativnaya/">Norton Commander</a>. В них предусмотрены как средства для быстрой навигации по файловой системе, так и срока для ввода команд.</p><p>Для того чтобы ввести команду:</p><ol><p>Наберите текст команды в командной строке.</p><p>Нажмите на клавишу <b>Enter </b>.</p> </ol><p>Командный процессор и команды операционной системы описаны в эксплуатационной документации на последнюю. Эта документация частично содержится внутри самой операционной системы. Для доступа к ней предназначена команда <b>help </b>. По этой команде на экран выводится список <a href="/sozdanie-i-nastroika-servera-opisanie-yadra-dlya-servera/">доступных команд</a>. Для того чтобы получить описание конкретной команды, в качестве параметра команда <b>help </b>следует указать ее имя. Командная строка, показанная на следующем листинге, выводит на экран описание команды <b>for </b>.</p><p>Если вы попробовали ввести команду <b>help </b>, то наверно обратили внимание, что результат ее работы (т.н. выдача) не умещается на один экран. Та же проблема возникает с текстом описания команды <b>for </b>. Хорошая новость состоит в том, что выдачу можно перенаправить в файл. Командная строка, показанная на следующем листинге, формирует файл <b>commands.txt </b>, содержащий список всех команд MS-DOS.</p><p>help > commands.txt</p><p>Для того чтобы сформировать файл с описанием команды <b>for </b>, надо дать такую команду (имя выходного файла можете сделать любым).</p><p>help for > for.txt</p><p>Всего в современных операционных системах корпорации Microsoft чуть меньше 80 команд, и описать их в одной статье невозможно. Здесь мы можем только упомянуть о нескольких командах, полезных для автоматизации обработки файлов и показать, как ими пользоваться. Эти команды будут в дальнейшем использоваться в примерах. Детали вы всегда сможете уточнить по команде <b>help </b>или в справочнике.</p><p><b>copy </b>- копирование одного или нескольких файлов;</p><p><b>del </b>- удаление одного или нескольких файлов;</p><p><b>move </b>- перемещение одного или нескольких файлов или каталогов;</p><p><b>rename </b>(сокращенно <b>ren </b>) - переименование одного или нескольких файлов или каталогов;</p><p><b>xcopy </b>- копирование дерева подкаталогов;</p><p><b>mkdir </b>(сокращенно <b>md </b>) - создание каталога;</p><p><b>rmdir </b>(сокращенно <b>rd </b>) - удаление каталога.</p><p>Одно из общих правил синтаксиса команд MS-DOS состоит в том, что при указании параметров сначала указывается источник, а потом результат. Например, если мы хотим переместить файл <b>beer.txt </b>из каталога <b>box </b>в каталог <b>table </b>, мы должны ввести команду, приведенную на следующем листинге.</p><p>move box\beer.txt table</p><p>Сначала что переместить, потом куда переместить.</p><p>Если мы хотим переименовать файл <b>lena.txt </b>в файл <b>natasha.txt </b>, то команда должна быть записана так, как показано ниже.</p><p>ren lena.txt natasha.txt</p><p>Сначала что переименовать, потом во что переименовать.</p><p><b>Текущий каталог. Абсолютные и относительные пути </b></p><p>При работе с файловыми командами исключительную важность приобретает понятие текущего каталога. Дело в том, что при указании файла в качестве параметра команды мы всегда используем один из двух возможных способов указания на них: либо абсолютный путь, либо относительный путь. В полном пути мы указываем все, начиная с диска (или <a href="/how-to-find-out-the-computer-user-name-and-password-how-to-find-out-your-login-your-network-name/">сетевого имени</a> компьютера), например <b>d:\misha\box\beer.txt </b>. Какой бы каталог ни оказался текущим в момент ввода команды, полный путь будет соответствовать одному и тому же файлу. Для <a href="/kak-zadat-otnositelnyi-put-v-html-absolyutnye-i-otnositelnye-puti-chto/">относительного пути</a> текущий каталог служит отправной точкой. Простейший случай относительного пути - имя файла. В контексте выполнения команды оно означает файл с таким именем, расположенный в текущем каталоге.</p><p>Для записи относительного пути к текущему каталогу существует условная запись <b>. </b> (точка). Для записи относительного пути к каталогу, в котором содержится текущий каталог, существует условная запись <b>.. </b> (две точки). Команда, показанная на следующем листинге, копирует все файлы из текущего каталога в каталог <b>neighbour </b>, расположенный рядом с ним.</p><p>copy *.* .\neighbour</p><p><b>Командные файлы </b></p><p>До сих пор, приводя примеры, мы считали, что всякий раз вводим команды вручную. При обработке большого количества файлов или при систематическом выполнении одних и тех же команд это становится обременительно. Поэтому в командном процессоре предусмотрена возможность выполнения командных файлов. Командный файл - это <a href="/chto-patch-i-kak-ego-ustanovit-izuchaem-soderzhimoe-papki-s-ustanovochnym/">текстовый файл</a>, в котором набраны команды (или хотя бы одна команда). Пример командного файла показан на следующем листинге. Попробуйте догадаться, что делает этот командный файл.</p><p>help copy > copy.help</p><p>help move > move.help</p><p>move *.help msdos-help</p><p>Если назначение этого файла остается для вас загадкой, то попробуйте в действительности создать и выполнить его. Командным файлам принято давать расширение <b>bat </b>. По нему файлы этого типа опознаются командным процессором. Этот файл можно назвать, например, <b>make-help.bat </b>.</p><p>Для того чтобы запустить командный файл:</p><ol><p>Введите его имя в качестве команды. После этого командный файл будет выполнен.</p> </ol><p>В командном файле каждая команда занимает одну строку. Точнее, существует способ расположить одну команду на нескольких подряд идущих строках, для этого непосредственно перед каждым переводом строки следует поставить символ «крышка» <b>^ </b>. (Необходимо, чтобы каждая «крышка» была последним символом в своей строке; после нее не должно быть пробелов и табуляций). Пример такой команды показан на следующем листинге.</p><p>if exist disser.txt ^</p><p>copy disser.txt ^</p><p>d:\science\papers\drafts\sources</p><p>Но для простоты, чтобы каждый раз не делать оговорок, мы будем считать, что в некотором смысле это одна длинная «логическая» строка.</p><p>При выполнении командного файла командный процессор просматривает его сверху вниз от первой строки к последней и выполняет команды в том порядке, в котором их обнаруживает. Выполняет он в целом их так, как если бы мы каждую из них вводили вручную. В целом, потому что некоторые команды при вводе вручную и при выполнении из командного файла ведут себя немного по-разному.</p><p>Забегая вперед, скажем, что при необходимости последовательность выполнения команд можно изменить с помощью управляющих команд (с чем может быть связана такая необходимость, вопрос отдельный).</p><p>Не путайте текущий каталог с каталогом, в котором находится запускаемый командный файл. Предположим, текущим каталогом является <b>work </b>, в нем находится каталог <b>tools </b>, а в каталоге tools хранятся командные файлы. Вы запускаете один из них командой <b>tools\collect-images.bat </b>. Так вот, «с точки зрения» этого командного файла, текущим каталогом все равно окажется <b>work </b>, а не <b>tools </b>.</p><p><b>Комментирование командного файла и его выдачи. Команды echo и rem </b></p><p>Командный файл, по существу, представляет собой программу, написанную на языке командного процессора операционной системы. Текст программы полагается снабжать комментариями, чтобы, вернувшись к нему некоторое время спустя, не вспоминать мучительно, для чего эта программа нужна, и как она устроена.</p><p>В системе команд MS-DOS для оформления комментариев предусмотрена команда <b>rem </b>. Это фиктивная команда, которая не предполагает выполнения каких бы то ни было действий, но позволяет написать в строке после своего имени произвольный текст. Причем командный процессор не воспринимает его как синтаксическую ошибку. Пример оформления командного файла комментариями показан на следующем листинге.</p><p>rem *****************************************************</p><p>rem Формируем файлы справки</p><p>help copy > copy.help</p><p>help move > move.help</p><p>move *.help msdos-help</p><p>Обратите внимание на пустые строки, которыми командный файл разбит на «абзацы». Этот простой прием позволяет сделать командный файл более читабельным.</p><p>При выполнении приведенного выше командного файла все команды будут выводиться на экран по мере их выполнения, что не всегда удобно. Выдачу команд можно отключить с помощью команды <b>@echo off </b>. Символ «собака» перед командой <b>echo </b>означает, то и сама эта команда должна выполняться в «молчаливом» режиме. С таким же успехом мы могли бы не пользоваться командной <b>echo off </b>, а поместить «собаку» перед каждой командой.</p><p>Во многих случаях требуется, чтобы командный файл выводил на экран (или в файл) те или иные сообщения. В одних случаях это могут быть сообщения об ошибках, в других информационные сообщения, объясняющие пользователю командного файла, что происходит в данный момент, когда-то мы формируем командным файлом какой-нибудь другой полезный файл. Для вывода сообщений применяется та же самая команда echo. В качестве параметра ей передают текст выводимого сообщения. Листинг усовершенствованного командного файла приведен ниже.</p><p>rem *****************************************************</p><p>rem Формирование файлов справки по командам copy и move</p><p>rem *****************************************************</p><p>@echo Формируем файлы справки. Одну секундочку...</p><p>rem Формируем файлы справки</p><p>help copy > copy.help</p><p>help move > move.help</p><p>rem Создаем каталог для хранения файлов справки</p><p>rem Перемещаем файлы справки в подготовленный каталог</p><p>move *.help msdos-help</p><p>echo Готово!</p><p><b>Передача командному файлу параметров </b></p><p>Предположим, мы хотим создать командный файл, который сначала формирует справку с описанием заданной пользователем команды, а потом загружает его для просмотра в блокнот. Фокус в том, чтобы при очередном запуске командного файла каким-то образом сообщить ему, какая именно команда нас интересует на этот раз.</p><p>Для решения этой задачи предусмотрен механизм обработки параметров. Работает он довольно просто. Если при запуске командного файла пользователь указал несколько параметров, то в тексте командного файла первый из них мы обозначаем записью <b>%1 </b>, второй записью <b>%2 </b>, третий записью <b>%3 </b> и т.д. Этими обозначениями мы пользуемся в тексте командного файла примерно так же, как в естественной речи местоимениями.</p><p>Текст командного файла, решающего поставленную задачу, приведен на следующем листинге. Обратите внимание на команду <b>help </b>. В качестве ее параметра ей передается первый параметр командного файла.</p><p>rem Формируем файл с описанием команды,</p><p>rem имя которой передано параметром</p><p>help %1 > help.tmp</p><p>rem Загружаем файл описания в редактор Блокнот</p><p>notepad help.tmp</p><p>Предположим, что мы присвоили этому командному файлу имя <b>show-help.bat </b>. Для того чтобы загрузить в блокнот описание команды, например, <b>dir </b>, мы должны ввести команду следующим образом.</p><p>show-help.bat dir</p><p>Следующий командный файл создает каталог с именем, указанным в первом параметре, и записывает в него файл с текстом описания команды, указанной во втором параметре.</p><p>rem Пример командного файла с двумя параметрами</p><p>rem Создаем каталог с именем, заданным первым параметром</p><p>rem Создаем в нем файл с описанием команды,</p><p>rem заданной вторым параметром</p><p>help %2 > %1\%2.help</p><p>Что произойдет, если пользователь при запуске этого командного файла укажет не два, а четыре параметра? Ничего страшного, они ничему не помешают, просто не будут использованы. А что будет, если пользователь укажет только первый параметр? Второй параметр окажется пустым. Эффект получится такой: командный файл будет выполнен, но так, как будто на месте записи <b>%2 </b> ничего нет. Команда help сформирует список всех команд и поместит его в файл с пустым именем и расширением.help. Если же пользователь запустить этот файл, не указав ни одного параметра, то при попытке командного процессора выполнить команду <b>md </b>(напомним, она предназначена для создания каталога), мы получим сообщение о синтаксической ошибке, поскольку у команды md обязательно должен быть параметр.</p><p>Таким образом, использование параметров создает большие возможности, но может существенно усложнить дело. Для того чтобы командный файл всегда работал корректно, необходимо проверять корректность указания пользователем параметров и каким-то образом реагировать на неполные или неверные входные данные. Можно, конечно, этого и не делать, но некорректно работающий командный файл может наломать дров, особенно, если он предусматривает удаление или перезапись данных.</p><p><b>Переменные. Команда set </b></p><p>Переменной называется поименованное значение. В учебниках по программированию переменную обычно сравнивают с конвертом, на котором написано имя. Внутрь конверта можно положить нечто, например, определенную сумму денег - это ее значение. Как и в случае с конвертом, значение переменной можно изменить.</p><p>Для объявления переменной и одновременно для присвоения ей значения применяется команда <b>set </b>. Пример записи этой команды показан на следующем листинге.</p><p>Для извлечения значения переменной ее имя помещают между двумя знаками процента, как показано ниже.</p><p>rem Компилятор хелп-файлов в формате CHM</p><p>set help_compiler=c:\HTML Help Workshop\hcc.exe</p><p>rem Проект хелп-файла модуля "Склад"</p><p>set store_hpj=help\sources\store\store.hpj</p><p>rem Проект хелп-файла модуля "Продажи"</p><p>set sales_hpj=help\sources\sales\sales.hpj</p><p>rem Компилируем хелп-файлы</p><p>%help_compiler% %store_hpj%</p><p>%help_compiler% %sales_hpj%</p><p>Приведенный листинг показывает, в чем польза переменных.</p><p>Во-первых, они позволяют вместо длинного фрагмента (например, пути к компилятору хелп-файлов) использовать внутри командного файла синонимичный ему короткий. Как минимум, это удобно.</p><p>Во-вторых, они позволяют избежать повторения в тексте командного файла фрагментов, которые в дальнейшем могут меняться. Представьте себе, что мы переустановили Microsoft HTML Workshop в другой каталог. Если в командном файле для записи пути к нему применяется переменная, то будет достаточно исправить в командном файле только одну строку, а именно, ту в которой присваивается значение переменной <b>help_compiler </b>. Если бы мы писали путь к компилятору всякий раз, когда его необходимо взывать, то после изменения пути нам пришлось бы исправить каждую такую строку. В приведенном примере их две, но в реальном проекте их с таким же успехом может оказаться пять или пятнадцать, по числу хелп-файлов, которые мы хотим скомпилировать. Проблема не в том, что исправлять вручную каждую строчку тяжело (в конце концов, команды “copy” и “paste” никто не отменял), а в том, что это сильно повышает вероятность случайной ошибки.</p><p>Параметры командного файла тоже являются переменными, но от обычных переменных отличаются тем, что их значения задаются при запуске командного файла. В дальнейшем, говоря о переменных, в особенности о работе с их значениями, мы будем иметь в виду и параметры командного файла тоже, во всяком случае, в отсутствие явных оговорок на это счет.</p><p>При написании командных файлов часто применяют следующий прием: несколько значений переменных указывают рядом (или перемежая их какими-либо символами или строками), так, чтобы получить некоторое новое осмысленное значение. Пример приведен на следующем листинге.</p><p><b>Проверка условий и выбор вариантов. Команды if и goto </b></p><p>Команда if позволяет выделять в командном файле группы команд, которые выполняются или не выполняются в зависимости от определенных условий. Для чего это нужно?</p><p>Проверка условия - почти необходимая мера при создании командных файлов, использующих параметры. Перед тем, как начинать работу, командный файл, вообще говоря, должен удостовериться в том, что ему передан корректный набор параметров. В <a href="/kuznecovskii-yurii-kem-rabotaet-sotni-tysyach-rublei-za-laik-kak/">противном случае</a> велик риск, что он выполнится неверно или безрезультатно, а пользователю останется только гадать, в чем же проблема. Более того, если командный файл удаляет, перемещает или перезаписывает какие-либо данные, то при некорректных параметрах он может даже нанести ущерб.</p><p>На следующем листинге показан уже знакомый вам командный файл компиляции хелп-файла. В начало командного файла добавлена проверка первого параметра на непустоту. Обратите внимание на такую особенность синтаксиса: для операции сравнения используется сдвоенный знак равенства. Если первый параметр оказывается непустым, срабатывает команда goto, которая «перебрасывает» командный процессор к указанной метке. В данном случае имя этой метки compile. Обратите внимание, что там, где метка находится, ее имя предваряется двоеточием, а в команде goto нет. При пустом первом параметре командный процессор переходит к <a href="/kak-pereklyuchitsya-na-sleduyushchuyu-stroku-kak-pereiti-na-novuyu/">следующей строке</a>, которая выдает сообщение об ошибке. А потом к следующей, которая перебрасывает его в самый конец файла к метке с именем <b>finish </b>.</p><p>if not "%1"=="" goto compile</p><p>rem Если параметр пуст, выдаем сообщение об ошибке</p><p>echo Не указано имя проекта хелп-файла</p><p>rem и переходим в конец командного файла</p><p>rem к метке finish</p><p>rem Это метка с именем compile</p><p>rem Ниже расположены команды компиляции</p><p>rem Путь к компилятору хелп-файлов</p><p>set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe"</p><p>rem Путь к каталогу, в котором находятся проекты хелп-файлов</p><p>set project_path=e:\work\projects\help-projects</p><p>rem Вызываем компилятор для обработки конкретного проекта,</p><p>rem имя которого передаем в первом параметре</p><p>%help_compiler% %project_path%\%1.hpj</p><p>rem Это метка с именем finish</p><p>Скажем прямо, предложенный способ проверки параметра не самый удачный.</p><p>Во-первых, если пользователь по ошибке укажет в качестве параметра имя несуществующего файла, командный файл этим удовлетворится и предпримет попытку компиляции. Более правильный способ - проверить, существует ли такой файл в действительности. Для этого в языке команд MS-DOS предусмотрено специальное слово <b>exist </b>. Поэтому лучше было бы написать: <b>if exist %1.hpj goto compile </b>.</p><p>Во-вторых, активное использование команды <b>goto </b>(т.н. безусловного перехода) и меток сильно запутывают код. Технически они ничем не плохи, но отлаживать и сопровождать командный файл, написанный в таком стиле, довольно неудобно. Поэтому программисты издавна считают безусловный переход приемом нежелательным. Ниже показан более правильный, с точки зрения стиля программирования, структурированный вариант, в котором используется конструкция <b>if…else </b>. Работает она так: если условие истинно, выполняются команды в скобках после <b>if </b>, а если ложно, то в скобках после <b>else </b>.</p><p>rem Проверяем, задан ли параметр</p><p>if not exist %1.hpj (</p><p>rem Путь к компилятору хелп-файлов</p><p>set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe"</p><p>rem Путь к каталогу, в котором находятся проекты хелп-файлов</p><p>set project_path=e:\work\projects\help-projects</p><p>rem Вызываем компилятор для обработки конкретного проекта,</p><p>%help_compiler% %project_path%\%1.hpj</p><p>Приведем еще один пример работы с проверками. Следующий командный файл создает каталог с именем <b>help-files </b> (предположим, для выгрузки в него скомпилированных хелп-файлов). При этом, если каталог с таким именем уже существует (и в нем, вероятно, находятся старые хелп-файлы, которые не хотелось бы терять: вдруг новые окажутся хуже?), командный файл присваивает ему расширение bak. Но если каталог <b>help-files.bak </b> уже существовал, то командный файл его удаляет (будем считать, что одной резервной копии нам хватит).</p><p>if exist help-files.bak rd help-files.bak</p><p>if exist help-files ren help-files help-files.bak</p><p><b>Массовая обработка файлов. Команда for </b></p><p>Команда for позволяет организовать выполнение повторяющихся однотипных действий. Можно использовать ее для того, чтобы вывести на экран числа от одного до десяти, как показано на следующем листинге.</p><p>for /l %%i in (1,1,10) do echo %%i</p><p>Переменная <b>i </b> называется счетчиком цикла. В силу своеобразия синтаксиса команды <b>for </b>, имя счетчика цикла должно состоять из одной буквы. Причем, если мы пишем командный файл, то перед именем счетчика цикла надо поставить сдвоенный знак процента, если же мы просто набираем команду в командной строке, то одиночный.</p><p>Логика работы этой команды такова. После слова <b>in </b> указан диапазон изменения счетчика цикла. В <a href="/ogranichit-maksimalnyi-razmer-indeksiruemyh-dannyh-1c/">данном варианте</a> команды это тройка чисел: начальное значение счетчика, шаг счета, предельное значение счетчика. При выполнении команды командный процессор сначала присвоит переменной <b>i </b> значение <b>1 </b>, а потом на каждом шаге цикла будет увеличивать его на <b>1 </b>, пока оно не превысит <b>10 </b>. Очевидно, таких шагов получится десять. Если бы в качестве шага счета мы указали число <b>2 </b>, то цикл выполнился бы пять раз. На каждом шаге цикла выполняется тело цикла, написанное после слова <b>do </b>. В приведенном примере это команда echo, которая выводит на экран текущее значение счетчика цикла.</p><p>Наверно можно придумать ситуацию, когда что-то подобное на самом деле требуется, но обычно команда <b>for </b>используется для перебора и обработки файлов. Надо сказать, что в достаточно простых случаях массовая обработка файлов выполняется с помощью подстановочных символов. Если, мы хотим всем файлам в текущем каталоге заменить расширение <b>.htm </b> на <b>.html </b>, мы вводим команду <b>ren *.htm *.html </b>. Но если то же самое надо сделать не в одном каталоге, а в дереве каталогов, то без команды for не обойтись. Приведенный ниже командный файл выполняет эту операцию для всех htm-файлов в подкаталоге website текущего каталога. Точнее, во всем дереве каталогов, которое находится внутри <b>website </b>.</p><p>for /r website %%i in (*.htm) do ren %%i %%~ni.html</p><p>Ключ <b>/r </b> указывает на необходимость обхода каталога <b>website </b> и всех его внутренностей. Если его не указать (но тогда и каталог указывать не разрешается), то обработаны будут только файлы в текущем каталоге. Диапазоном значений счетчика цикла в данном варианте команды является множество всех файлов с расширением <b>.htm </b>, находящихся внутри каталога (точнее, дерева) <b>website </b>. Странная на первый взгляд запись <b>~ni </b> означает, что из значения переменной <b>i </b> требуется выделить только имя файла. В языке команд MS-DOS предусмотрено несколько таких модификаторов, например, запись <b>~хi </b> обозначает расширение файла. Все модификаторы описаны в справке по команде <b>for </b>.</p><p>Тело цикла может состоять из нескольких команд, заключенных в скобки.</p><p>for /r website %%i in (*.htm) do (</p><p>rem Выводим имя файла</p><p>rem Переименовываем файл</p><p>ren %%i %%~ni.html</p><p><b>Передача управления другому командному файлу. Команда call </b></p><p>Существует возможность вызвать из одного командного файла другой командный файл. Для этого служит команда <b>call </b>. Замечательно, переменные, заданные в вызывающем командном файле «видны» вызванному. И наоборот, после того, как вызванный файл закончит работу и вернет управление вызвавшему, последний будет «видеть» переменные, оставленные ему вызванным «в наследство». Это позволяет разработчику командных файлов действовать, например, следующим образом. Если несколько командных файлов должны пользоваться одними и теми же значениями, допустим, путями к каким-то файлам, их можно вынести в отдельный командный файл, который будет играть роль конфигурационного файла. Каждый рабочий командный файл будет начинаться вызовом конфигурационного. Выигрыш в том, что при изменении путей вносить изменения придется только в один конфигурационный файл, а не во множество рабочих.</p><p>«Конфигурационный» командный файл <b>config.bat </b>.</p><p>rem Путь к компилятору хелп-файлов</p><p>set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe"</p><p>rem Путь к каталогу, в котором находятся проекты хелп-файлов</p><p>set project_path=e:\work\projects\help-projects</p><p>«Рабочий» командный файл.</p><p>rem Настраиваем переменные</p><p>rem Проверяем, задан ли параметр</p><p>if not exist %1.hpj (</p><p>rem Если параметр пуст, выдаем сообщение об ошибке</p><p>echo Такого проекта хелп-файла не существует.</p><p>rem Ниже расположены команды компиляции</p><p>rem Вызываем компилятор для обработки конкретного проекта,</p><p>rem имя которого передаем в первом параметре</p><p>%help_compiler% %project_path%\%1.hpj</p> <p>В этой статье я приведу несколько примеров написания BAT-файлов. Рассмотрим команды для того, чтобы изменить <a href="/change-the-system-time-and-date-system-time-of-the-computer/">системную дату</a>, запустить и отключить службу windows, запустить программу, вывести сообщение для пользователя.</p> <blockquote><p><b>Пакетный файл </b> (<a href="/kak-razdelit-txt-fail-na-neskolko-chastei-batch-file-faila/">batch file</a>) - это текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения <a href="/kak-nazyvaetsya-zapushchennyi-komandnyi-interpretator-komandy-i/">командным интерпретатором</a>. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл - аналог скриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.</p> <p>Пакетные файлы в DOS имеют расширение.BAT; для других операционных систем они могут иметь другие расширения - например, .CMD в Windows NT и OS/2 или.BTM в 4DOS (англ.) или подобных оболочках.</p> </blockquote> <p>Чтобы создать <a href="/milye-kursory-dlya-windows-10-kursory-dlya-programmy-cursorxp-gde-zhe-vzyat-ispolnitelnye-faily-dlya/">исполнительный файл</a> в операционной <a href="/vosstanovlenie-sistemy-windows-vosstanovlenie-sistemy-windows-skachat-obraz/">системе windows</a> достаточно всего двух действий:</p> <ul><li>Выбираем папку расположение будущего bat-файла</li> <li>Щелкаем правой кнопкой мыши и выбираем: создать > текстовый документ</li> <li>Задаем название файлу и меняем расширение.txt на.bat, например должно получиться «file.bat». Соглашаемся на изменение расширения, нажимаем «Да»</li> </ul><p><img src='https://i1.wp.com/what-what.ru/wp-content/uploads/2016/02/sozdanie-bat-fayla.jpg' width="100%" loading=lazy></p> <p>Всё! Исполнительный файл готов. Осталось только добавить в него команды. Для этого нажимаем по нему правой кнопкой мыши и выбираем «изменить». В открывшемся окне текстового редактора и вводятся команды.</p> <p><b>Вывод текстовых сообщений </b></p> <p>Для вывода текста на экран существует команда <b>ECHO </b>. После команды пишем текст для вывода. Например, в bat файле записываем строки:</p> <blockquote><p>echo привет мир!<br> pause</p> </blockquote> <p>Команду <b>PAUSE </b> даём для того, чтобы окно не закрывалось автоматически после выполнения <b>ECHO </b>, а ожидало нажатия любой клавиши для выхода.</p> <p><img src='https://i2.wp.com/what-what.ru/wp-content/uploads/2016/02/sozdanie-bat-fayla-3.jpg' width="100%" loading=lazy></p> <p>Как видно из рисунка текст выводится, но есть проблемы с кодировкой. Для отображения русских символов добавим в самое начало команду <b>Chcp <код_кодировки> </b>. Приведу пример кодировок:</p> <ul><li>1251 – Windows (кириллица);</li> <li>866 – DOC-кодировка;</li> <li>65001 – UTF-8;</li> </ul><p>Изменим код нашего исполнительного файла на такой:</p> <blockquote><p>@echo off<br> Chcp 1251<br> echo привет мир!<br> pause</p> </blockquote> <p>Команда <b>@echo off </b> служит для отключения вывода адреса и текста самой команды. Русский текст отображается.</p> <p><img src='https://i1.wp.com/what-what.ru/wp-content/uploads/2016/02/sozdanie-bat-fayla-4.jpg' width="100%" loading=lazy></p> <p><b>Ввод данных пользователем </b></p> <p>Часто для решения каких-либо задач требуется вручную задать значения переменных. Рассмотрим такой пример, исполнительный файл спрашивает имя пользователя, далее выводит текст «привет <имя>».</p> <blockquote><p>@echo off<br> Chcp 1251<br> set /p input=»Ваше имя: »<br> echo Привет, %input%<br> pause</p> </blockquote> <p>Командой <b>SET </b> мы создаем переменную input и присваиваем ей значение введенное пользователем. Для вывода значения переменной заключаем её имя в знак <b>% </b>.</p> <p><img src='https://i1.wp.com/what-what.ru/wp-content/uploads/2016/02/sozdanie-bat-fayla-5.jpg' width="100%" loading=lazy></p> <p><b>Включения и выключение служб windows </b></p> <p>Иногда встречаются ситуации, когда службы программ конфликтуют между собой. Например такая ситуация наблюдается с программами TecDoc и ETK BMW (это каталоги <a href="/raznovidnosti-avtomobilnyh-zapchastei-tak-li-strashny-neoriginalnye/">автомобильных запчастей</a>, ошибка службы Transbase). Пока запущена служба одной программы — не запустится служба второй, а следовательно и сама программа. Ситуация решается несколькими строчками в исполнительном файле:</p> <blockquote><p>@echo off<br> net stop Transbase<br> net start Transbase TECDOC CD 2_2015 Service<br> start «» «C:\TECDOC_CD\2_2015\pb\tof.exe»</p> </blockquote> <p>Команды <b>net stop </b> и <b>net start </b> выключают и включают <a href="/ne-udaetsya-poluchit-dostup-k-windows-installer-vklyuchaem-sluzhbu-ustanovshchika-windows-v/">службы windows</a>. Команда <b>start «» <путь> </b> запускает программу. Таким образом если включена мешающая программе служба, то она выключится и запустится нужная, и только после этого произойдёт запуск программы. Создаем второй исполнительный файл, меняем службы местами и прописываем пусть к второй программе. Готово! У вас два bat файла, ими и нужно запускать программы. Единственный минус такого решения — это невозможность одновременного использования обоих программ.</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>