Написание bat файлов

Запуск программ в файле bat и другие базовые команды

В командном файле вы можете запускать любые программы и команды из этого списка: https://technet.microsoft.com/ru-ru/library/cc772390(v=ws.10).aspx (правда, некоторые из указанных могут отсутствовать в Windows 8 и Windows 10). Далее — лишь некоторые базовые сведения для начинающих пользователей.

Чаще всего бывают следующие задачи: запуск программы или нескольких программ из .bat файла, запуск какой-то функции (например, очистка буфера обмена, раздача Wi-Fi с ноутбука, выключение компьютера по таймеру).

Для запуска программы или программ используйте команду:

start "" путь_к_программе

Если путь содержит пробелы, возьмите весь путь в двойные кавычки, например:

start "" "C:Program Filesprogram.exe"

После пути к программе можно также указать параметры, с которыми она должна запускаться, например (аналогично, если параметры запуска содержат пробелы, возьмите их в кавычки):

start "" c:windowsnotepad.exe file.txt

Примечание: в двойных кавычках после start по спецификациям должно указываться имя командного файла, отображаемое в заголовке командной строки. Это необязательный параметр, но при отсутствии этих кавычек выполнение bat файлов, содержащих кавычки в путях и параметрах может пойти неожиданным образом.

Еще одна полезная возможность — запуск другого bat файла из текущего файла, сделать это можно с помощью команды call:

call путь_к_файлу_bat параметры

Переданные параметры при запуске можно прочитать внутри другого bat файла, например, мы вызываем файл с параметрами:

call file2.bat параметр1 параметр2 параметр3

В file2.bat можно прочесть эти параметры и использовать в качестве путей, параметров для запуска других программ таким образом:

echo %1 echo %2 echo %3 pause

Т.е. для каждого параметра мы используем его порядковый номер со знаком процента. Результатом в приведенном примере будет вывод в окно команд всех переданных параметров (команда echo используется для вывода текста в окно консоли).

По умолчанию, окно команд закрывается сразу после выполнения всех команд. Если нужно прочитать информацию внутри окна, используйте команду pause — она остановит выполнение команд (или закрытие окна) до нажатия любой клавиши в консоли со стороны пользователя.

Иногда, перед выполнением очередной команды нужно подождать некоторое время (например, до полного запуска первой программы). Для этого можно использовать команду:

timeout /t время_в_секундах

При желании, вы можете запустить программу в свернутом виде или развернутом видео с помощью параметров MIN и MAX перед указанием самой программы, например:

start "" /MIN c:windowsnotepad.exe

Для закрытия окна команд после выполнения всех команд (хотя, обычно оно и так закрывается при использовании start для запуска), используйте команду exit в последней строке. В случае, если консоль все равно не закрывается после запуска программы, попробуйте использовать такую команду:

cmd /c start /b "" путь_к_программе параметры

Примечание: в данном команде, если пути к программе или параметры содержат пробелы, могут быть проблемы с запуском, которые можно решить так:

cmd /c start "" /d "путь_к_папке_с_пробелами" /b имя_файла_программы "параметры_с_пробелами"
  • https://itswat.ru/kak-sozdat-fajl-bat-na-windows-10/
  • https://viarum.ru/kak-sozdat-bat-fayl-v-windows/
  • https://remontka.pro/create-bat-file-windows/

Ожидание появления заданного документа в файле BAT

В некоторых ситуациях возникает потребность осуществить заданные действия при возникновении определенного файла. Осуществление такой задачи в пакетном документе предусматривается следующий подход:

:test

if exist c:\1.txt goto go

ping -n 20 127.0.0.1 >nul

goto test

:go

start notepad.exe

Приведенный текст задает необходимость выполнения проверки каждые 20 секунд того, существует ли в корне диска С документа с названием 1.txt. Если подобное событие произойдет, выполняются действия после goto. В конкретной ситуации производится запуск программы блокнота, но можно использовать любые другие варианты.

Периодически возникает ситуация, когда искомый файл обладает крупным объемом и проводится его копирование. Таким образом, поиск выдаст результат, но какие-либо действия повлекут за собой появление ошибки. Чтобы этого не возникло, нужно несколько улучшить содержимое пакетного файла.

:test

if exist c:\1.txt goto go

ping -n 10 127.0.0.1 >nul

goto test

:go

rename c:\1.txt 1.txt

if not %errorlevel% == 0 goto go

del c:\1.txt

Как и раньше, попытка каких-либо действий с не полностью скопированным документом вызовет ошибку, но она не приведет к завершению. Произойдет повторение цикла и так до тех пор, пока ошибка не исчезнет.

Создание .bat файла с помощью блокнота

Первый и самый простой способ создать bat файл — использовать стандартную программу «Блокнот», присутствующую во всех актуальных версиях Windows.

Шаги по созданию будут следующими

  1. Запустите Блокнот (находится в Программы — Стандартные, в Windows 10 быстрее запустить через поиск в панели задач, если блокнота нет в меню «Пуск», запустить его можно из C:Windowsnotepad.exe).
  2. Введите в блокнот код вашего bat файла (например, скопируйте откуда-то, либо напишите свой, о некоторых командах — далее в инструкции).
  3. В меню блокнота выберите «Файл» — «Сохранить как», выберите место сохранение файла, укажите имя файла с расширением .bat и, обязательно, в поле «Тип файла» установите «Все файлы».
  4. Нажмите кнопку «Сохранить».

Примечание: если файл не сохраняется в указанное расположение, например, на диск C, с сообщение «У вас нет разрешения на сохранение файлов в этом месте», сохраните его в папку «Документы» или на рабочий стол, а затем скопируйте в нужное расположение (причина проблемы в том, что в Windows 10 для записи в некоторые папки нужны права администратора, а поскольку блокнот не был запущен от имени администратора, он не может сохранить файл в указанную папку).

Ваш файл .bat готов: если его запустить, будут автоматически выполнены все перечисленные в файле команды (при условии отсутствия ошибок и необходимости прав администратора: в некоторых случаях может потребоваться запускать файл bat от имени администратора: правый клик по файлу .bat — запустить от имени администратора в контекстном меню).

Примечание: в дальнейшем, если вы захотите отредактировать созданный файл, просто нажмите по нему правой кнопкой мыши и выберите «Изменить».

Существуют и другие способы сделать bat файл, но все они сводятся к написанию команд по одной команде в строке в текстовый файл в любом текстовом редакторе (без форматирования), который затем сохраняется с расширением .bat (например, в Windows XP и 32-битной Windows 7 вы даже можете создать файл .bat в командной строке с помощью текстового редактора edit).

Если у вас включено отображение расширений файлов (изменяется в панель управления — параметры проводника — вид — скрывать расширения зарегистрированных типов файлов), то вы можете просто создать файл .txt, затем переименовать файл, установив расширение .bat.

Запуск командной строки с правами администратора

Для выполнения некоторых команд требуются права администратора компьютера. Причем просто запустить командную строку Windows находясь в учетной записи пользователя с административными правами недостаточно. Ее необходимо запустить от имени администратора. Сделать это можно как всегда несколькими способами.

  • нажмите кнопку «Пуск» введите в поле поиска «командная строка» и щелкните правой кнопкой мыши по строчке «Командная строка» в результатах поиска и выберите в контекстном меню «Запуск от имени администратора» (все то же самое можно сделать с «cmd»);
  • нажмите «Пуск» ⇒ «Все программы» ⇒ «Стандартные» ⇒ щелкнуть правой кнопкой мыши по «Командная строка» и выбрать «Запуск от имени администратора»;
  • открыть в Проводнике папку C:\Windows\System32, щелкнуть по файлу cmd.exe правой кнопкой мыши и выбрать пункт «Запуск от имени администратора»;
  • сделать ярлык для запуска командной строки, щелкнуть по нему правой клавишей мыши и выбрать «Запуск от имени администратора»;
  • создать ярлык для командной строки и в его свойствах указать «Запускать от имени администратора», теперь командная строка будет сразу запускаться с нужными правами;
  • нажать комбинацию клавиш WIN + X (в Windows 8).

Каким способом пользоваться решать естественно вам, но в любом случае в названии открывшегося окна появится «Администратор».

Вот и все базовые знания, которые необходимо знать, чтобы пользоваться командной строкой Windows. Теперь вы не впадете в ступор от предложения воспользоваться командной строкой, даже если вы начинающий пользователь компьютера. Остальные возможности можете изучить самостоятельно, если вам это нужно. Вдруг вам так понравится, что вы будете предпочитать работать в командной строке, а не в графическом интерфейсе. Такие люди тоже есть.

Где находится командная строка?

Основной файл командной строки — консоль cmd.exe переводящий команды пользователя в понятный системе вид, находится в папке с установленной ОС по пути: :\WINDOWS\system32\cmd.exe

Как запустить / открыть / вызвать командную строку?

Данные методы запуска командный строки актуальны для всех версий, в том числе и тех, которые я рассматриваю на своем сайте — windows XP , 7 , 8

1) Пуск — Все программы — Стандартные — Командная строка

2) Пуск — Выполнить — вводим cmd.exe

3) сочетание клавиш Win + R — вводим cmd

4) Запуск из системной папки: :\WINDOWS\system32\cmd.exe

Для того, чтобы запустить командную строку от имени Администратора, подойдет 1 и 4 способ, нужно на ярлыке щёлкнуть ПКМ и выбрать в меню «Запуск от имени Администратора».

Команды / параметры / ключи командной строки .Узнать команды командной строки можно прям в ней же, набрав help и нажав клавишу Enter (после окончания ввода всех команд нужно использовать именно Enter (ВВОД) ).

Вдаваться слишком глубоко не буду, потому что для этого лучше писать отдельную статью. Приведу лишь небольшой пример использования командной строки.Допустим у меня на диске E находится папка 123 , а в ней текстовый файл test.txt .Вот теперь я хочу сделать этот файл скрытым, не заходя на этот диск и не «видя» этого файла с папкой. Команда, отвечающая за атрибут «Системный» — это attrib. И у неё существуют свои атрибуты (уже команды). Можете даже посмотреть на скрине выше, я там показывал именно её на примере.Из всех её атрибутов мне нужны только два — это его установка и сам атрибут. За это отвечают + и s.Итак, моя команда будет следующей: attrib +s e:/123/test.txt . Вот так будет выглядеть правильный результат:

Ой. Только заметил что вместо Скрытый я сделал его Системным, а ещё удивляюсь почему он не пропал в папке. Я специально не стал удалять скрины и редактировать статью для того, чтобы показать Вам как можно исправить такую оплошность (как я сделал). Тоже хорошая информация.

Ну и напоследок: Как редактировать текст в окне командной строки? Дело в том, что стандартные методы с помощью сочетаний клавиш Ctrl+C и Ctrl+V в командной строке не работают.Тут нужно пользоваться ПКМ — Правой Кнопкой Мыши.Для того, чтобы вставить текст в командную строку, просто кликаем ПКМ на любом месте командной строки, затем выбираем Вставить.

Для того, чтобы скопировать часть текста из командной строки можно воспользоваться одним из двух методов:1) ПКМ — Выделить всёВыделится весь текст, но можете выделить сразу какой Вам угодно, просто как обычно зажав ЛКМ 2) ПКМ — ПометитьПоявится мигающий курсор в начале строки, которым можно управлять «стрелочками» на клавиатуре. И при нажатой кнопке shift выделить текст, управляя так же «стрелками» на клавиатуре. Либо выделаем снова с помощью мыши.

при желании, можете изменить настройки командной строки, выбрав пункт в меню выше «Свойства»

Примеры

Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после
заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите
следующую команду:

dir /s/w/o/p

Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов
(включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в
каждом каталоге дерева каталогов.

Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов,
введите следующую команду:

dir /s/w/o/p/a:-d

Чтобы напечатать список каталогов, введите следующую команду:

ir > prn

Если указать параметр prn, список каталогов отправляется на принтер, подключенный к
порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn
именем этого порта.

Вывод команды dir также может быть направлен в файл при замене prn на имя
файла. Кроме того, можно также ввести путь. Например, для направления вывода команды
dir в файл Dir.doc в каталоге Records введите следующую команду:

dir > \records\dir.doc

Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога
Records. Если этот каталог не существует, выводится следующее сообщение:

Чтобы вывести список всех файлов с расширением .txt во всех каталогах диска C, введите
следующую команду:

dir c:\*.txt /w/o/s/p

Команда dir выводит на экран алфавитный список файлов, удовлетворяющих заданному
шаблону, в несколько колонок с паузой после заполнения каждого экрана.

Получить список файлов в папке с помощью bat-файла

Периодически пользуюсь bat-файлами для получения списков файлов в папках. Частая ситуация: по работе клиенты присылают от фотографа архив с фотографиями. Фотографии имеют названия в соответствии с артикулами товаров.

Никакой текстовой информации, сопровождающей фотографии нет. Необходимо сделать список на основе присланных фотографий и импортировать его в каталог товаров на сайте. Для каждого товара сделано по несколько фото. Они именованы так:

  1. Фото товара с артикулом А1234.jpg
  2. Фото товара с артикулом А1234 (2).jpg
  3. Фото товара с артикулом В1234.jpg
  4. Фото товара с артикулом В1234 (2).jpg

Сначала я получаю список всех файлов, находящихся в папке при помощи следующей команды:

Команда *.jpg позволит учитывать только JPG-файлы при составлении списка. Ключ /B позволит получить список, содержащий только имена файлов, находящихся в папке. Ключ /L выведет все имена в нижнем регистре.

Следующим шагом нужно избавиться от дублей, чтобы в списке осталось только по одной записи для каждого товара:

Команда findstr будет осуществлять поиск в ранее полученном файле. Ключ /I позволяет искать записи без учёта регистра, а ключ /V записывает строки, в которых отсутствует искомое совпадение.

  1. Фото товара с артикулом А1234.jpg
  2. Фото товара с артикулом В1234.jpg

И далее на основе этого текстового списка буду готовить файл для импорта.

Если вам понадобится провести обратную операцию – вывести в файл temp.txt только совпадения, то в списке команд (findstr /?) вы не найдёте нужной. Есть только обратный фильтр по точному совпадению – /X.

Для этой задачи можно воспользоваться командой вывода номера строк /N, в которых имеются совпадения (номера выводятся вместе со строкой):

Главное при работе с текстовой информацией (текстовыми файлами) помнить один момент:

Если для текстовых операций вы в качестве исходника используете файл, который создали не через командную строку, он должен быть в кодировке, которая понимается командной строкой. Например, CP1251 (ANSI).

Иначе рискуете получить на выходе нечто такое:

Пакетные BAT файлы

Пакетные файлы (иногда называемые bat, бат, batch, батник, батники) это обычные текстовые файлы, содержащие наборы команд интерпретатора и имеющие расширение *.bat. Редактировать такие файлы можно при помощи блокнота или любого другого текстового редактора, которым вы привыкли пользоваться.

Они содержат последовательный набор команд, которые выполняются в определенном, заранее заданном, порядке.

Для рядового пользователя знание принципов работы BAT файлов совершенно необязательно и редко когда требуется, но при выполнении каких-либо специализированных задач, использование пакетных файлов может очень сильно упростить жизнь и ускорить их выполнение.

С помощью пакетных файлов можно делать огромное количество различных действий, которые очень сложно/долго, а в некоторых ситуациях, просто невозможно выполнить без использования bat файлов, т.к.

необходимо либо приобретать специальный софт под конкретную задачу (пример – массовая конвертация картинок в папке(ах) по ключу в названии, либо самостоятельно писать такую программу на каком-либо языке программирования, что сможет далеко не каждый, да и целесообразность этого, для разового действия минимальна.

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

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

НО, если вы получили такой файл по почте, скачали из интернета (особенно с сомнительного сайта) и т.д., то запускать его следует только в том случае, если вы доверяете тому, кто этот файл написал и дал вам, либо понимаете, что делают все команды, которые прописаны в нем.

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

Поэтому к этому вопросу надо подходить со всей ответственностью и понимать, чем это может грозить.

@echo my first bat file @pause

Обратите внимание, что мы используем только английский алфавит при написании, в противном случае, при запуске этого bat файл с указанными настройками, мы получим не читаемые кракозябры, вместо текста. Этого можно избежать, воспользовавшись дополнительными командами. Пример заполнения файла

Пример заполнения файла

Выберите Файл – Сохранить как

Выберите Тип файла – Все файлы, в поле Имя файла введите start.bat и сохраните его в папке test на диске С.

Все, наш первый bat файл создан и лежит по адресу C:\test\start.bat. Теперь нам осталось этот файл запустить и увидеть результаты его работы.

Запустить .bat файл очень просто, это делается точно также, как и запуск .exe файлов. Для этого достаточно выделить нужный .bat файл в проводнике и дважды щелкнуть по нему левой кнопкой мыши.

Альтернативным вариантом запуска (чтобы случайно не запустить что то не то, например, в том случае, если в папке много файлов) может являться запуск bat файла в 2 этапа.

Сначала выделяем нужный файл левой кнопкой мыши, далее нажимаем на правую кнопку мыши, чтобы вызвать контекстное меню, и в нем уже выбираем пункт меню Открыть

В нашем примере, мы переходим в папку test на диске C:\ и запускаем файл start.bat, который мы ранее написали.

После его выполнения на экран будет выведено две строки, как на скриншоте ниже:

результат выполнения файла start.bat

После нажатия любой клавиши окно закроется, т.к

bat-файл выполнен.Обратите внимание, что символ собаки перед каждой командой в bat-файле указывает на то, что саму команду выводить на экран не надо, а нужно вывести только результат ее работы. Чтобы поэкспериментировать удалите символ собаки из начала каждой строки, сохраните и запустите полученный bat файл

Описание и примеры использования некоторых самых популярных команд есть у нас на сайте, ознакомиться с ними можно по этой ссылке: Справочник команд Windows (CMD)

В результате будет выведен список доступных команд и краткое описание к этим командам.

Для того, чтобы ознакомиться с описанием интересующей вас команды, необходимо в командой строке написать help команда. Например, чтобы получить подробную справку по команде copy, необходимо ввести:

help COPY

В результате, на экран будет выведена справка по команде COPY и доступные ключи.

Автоматический ответ на запросы о подтверждении

При работе некоторых команд может возникнуть ситуация, когда они должны совершить потенциально опасное действие в системе. В качестве примера рекомендуется назвать format или del. Подобный момент предусмотрен и выдается соответствующее предупреждение. Когда производится выполнение внутри пакетного файла, то его деятельность остановится. Она будет возобновлена только после подтверждения и это способно стать причиной потери драгоценного времени.

Существует способ осуществления задачи автоматизации. Предполагается использование перенаправления необходимого ответа в команду. Далее будет на примере рассмотрено подобное действие. Требуется создать на диске С обычную папку Folder и внутрь неё осуществим помещение любых 2х документов.

Запускаем интерпретатор команд и вводим в нем

del C:\Folder

Это предполагает необходимость осуществить удаление вместе со всеми файлами внутри. Поскольку подобное действие относится к числу потенциально опасных, поступит запрос на подтверждение следующего вида:

C:\Folder\*, продолжить [Y(да)/N(нет)]?

Команда не станет продолжаться до тех пор, пока пользователь не ответит. Если работа производится в автономном режиме, ожидание может быть крайне длительным, а сам процесс останется невыполненным. Для выхода из сложившейся ситуации рекомендуется применение специального символа (|). Он предусматривает, что должна произойти передача следующей сразу после команде. Теперь модифицируем строку в пакетном файле:

echo Y|del C:\Folder

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

Учимся создавать документ

Самый важный этап, к которому можно приступать только после установки Нотпад плюс плюс

Абсолютно не важно, будете вы использовать англ. версию или рус

Делайте выбор на свое личное усмотрение.

  1. В папке или на рабочем столе создаете текстовый документ (с разрешением *.txt) через контекстное меню. Имя файла может быть любым, главное расширение оставить без изменений.

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

    Наименование документа

  2. Созданный новый документ открываете через программу Нотпад. Сделать это можно, щелкнув по нему правой мышкой, затем выбрать – «Открыть с помощью», из списка выбрать нужную программу.

Создание текстового документа через файл программы Notepad++

Перенаправление результата выполнения команды в документ

В случае деятельности BAT файлов сложного типа способны возникнуть проблемы в плане того, насколько правильно функционирует система. Именно по этой причине применяется специальное средство – запись в специальный лог-файл. Это предусматривает возможность ознакомиться с документом в дальнейшем и провести анализ того, насколько правильно осуществлялось выполнение поставленных задач.

Чтобы выполнить перенаправление результата работы в специально предназначенный для этого документ, требуется создать файл BAT со следующими строками:

@echo off

echo Start %time%

echo Create test.txt

echo test>C:\test.txt

echo Copy Test.txt to Old_test.txt

copy C:\test.txt C:\Old_test.txt

echo Stop %time%

Необходимо подробнее разобрать, что именно выполняет указанный набор команд.

Первой строкой задается отключение вывода команд. Это позволит получить в лог-документе исключительно результаты осуществления.

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

Третьей строкой указывается на то, что следующей командой будет создаваться текстовый документ test.txt.

Четвертая строка предназначена для того, чтобы непосредственно осуществить поставленную задачу. Следующим этапом производится запись в него одного слова – test.

Пятая строка проводит выдачу в лог-документ пояснение о том, что следующим этапом станет происходить копирование в иное место.

В шестой строке осуществляется непосредственное копирование C:\test.txt в файл C:\Old_test.txt. Можно говорить о том, что происходит создание копии документа, но с присвоением для него нового названия.

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

Требуется рассмотреть дальнейшие возможности по модификации предложенного набора команд. Часто возникает запрос на выполнение хранения подобных документов в специально предназначенной для них папке. Каждый день должна производиться запись отчета с присвоением для него нового названия. Оптимальный вариант – это использование имени, состоящего из некоторого слова и автоматически добавляемой к нему текущей даты. Сам файл можно назвать 1.bat и сохранить.

Теперь создадим на диске папку LOG и полный путь к ней станет иметь указанный вид: C:\LOG. Следующим этапом происходит запуск команду установленного типа:

1.bat>C:\LOG\%date~-10%.txt

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

«C:\Program Files\1.bat»>C:\LOG\%date~-10%.txt

C:\Progra~1\1.bat>C:\LOG\%date~-10%.txt

Предполагается, что сразу после начала работы 1.bat в папке C:\LOG произойдет создание документа с названием, которое включает текущую дату. Именно указанный файл и требуется установить в качестве отчета о деятельности пакетного файла 1.bat. Если запустить рассмотренный BAT файл, то предполагается предоставление указанного далее результата:

Start 19:03:27,20

Create test.txt

Copy Test.txt to Old_test.txt

Скопировано файлов: 1.

Stop 19:03:27,21

Чтобы произвести перенаправление результатов работы bat-документа в лог-документа, следует применять специальный символ (>). Написание команды будет иметь представленный ниже вид:

Путь\ИмяФайла.bat>Путь\ИмяЛогФайла.txt

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector