...

Скрипт bat что это за программа

Решаем практические задачи на батниках

Батники это не мощный язык программирования, но, в то же время, на нем можно решить много рутинных задач. Цель статьи не просто рассказать о возможностях Windows-консоли, а показать их, решая практические задачи с которыми мне приходилось сталкиваться.

Подтверждение выполнения

set answer= set /p answer="Выполнить? [y/n]:" if not "%answer%" == "y" exit /b

Устанавливаем переменную answer в пустое значение (необходимо, для того чтобы затереть предыдущее значение, например, если батник исполняется несколько раз). set с ключом /p устанавливает значение переменной, которое вводится пользователем. Проверяем значение переменной и если оно не равно y завершаем выполнение батника.

Как получить текущий месяц, день, год и т.п.?

В батниках есть возможность получать подстроку используя синтаксис %variable:~m,n% Где variable это название переменной m – индекс первого символа, а n – количество символов подстроки.

Следовательно, если команда echo %date% (а формат даты может у вас отличатся) выведет 13.06.2009, то для того чтобы получить текущий месяц достаточно выполнить %date:~3,2% Таким образом, если нам необходимо, например, сформировать имя файла или директории, которое соответствует текущему месяцу и дню, мы это сделаем так:

set fname=%date:~3,2%%date:~0,2%

Лично мне такое понадобилось для задания ключа /d для xcopy.

Как вывести пустую строку в лог-файл?

Я не сразу догадался, что это можно делать вот так: 🙂

echo.>> %logfile%

Т.е. нужно поставить точку после echo.

Предыдущая команда выполнена успешно?

В большинстве случаев это:

if %errorlevel%==0 ( echo OK>> %logfile% ) else ( echo ERROR #%errorlevel% >> %logfile% )

Архивирование файла с переменным именем

for %%i in (c:\dir\#fe*.*) do rar a -ep c:\other_dir\%%~ni.rar %%i

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

for %%i in (c:\dir\#fe*.*) do

мы выбираем все файлы по маске, исполняя команду rar a -ep c:\other_dir\%%~ni.rar %%i для каждого, где %%~ni это только имя файла.

Имя текущего исполняемого батника

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

«Функция» в батниках

Если мы исполняем в одном батнике несколько повторяющихся команд, но с разными значениями переменных, то это можно реализовать так:

set thebat=c:\Program Files\The Bat!\thebat.exe set action=SEND set [email protected] set subject=Subject_1 set attach=c:\dir\file. call :mailit set [email protected] set subject=Subject_2 set attach=c:\dir\file*.rar call :mailit … exit :mailit @echo on "%thebat%" /MAILTO="%mailto%";SUBJECT="%subject%";ATTACH="%attach%";%action% >> %logfile% @echo off exit /b

Таким образом, у меня отсылается десяток разных файлов разным получателям, используя The Bat! Такой файл читать и редактировать намного удобнее, чем это было бы десять команд The Bat! подряд.

Получить последний по дате создание файл

Для начала получим список всех файлов, отсортированных по дате модификации:

dir /b /od /a-d c:\dir\file_*.xls

И пройдемся по нему циклом.

for /f "tokens=*" %%a in (' dir /b /od /a-d c:\dir\file_*.xls ') do set "lastfile=%%a"

Логично, что по завершению цикла в переменной %lastfile% у нас будет последний по дате модификации файл 😉

Выкачать файл по FTP

ftp -s:file_to_ftp.txt 127.0.0.1

Где файл file_to_ftp.txt будет у нас выглядеть следующим образом:

login password bin cd /files put file.xls quit

Создаем нумерованные каталоги с инкрементом на единицу

set dir_last= for /f "tokens=*" %%i in ('dir /ad /b') do set dir_last=%%i if '%dir_last%'=='' (set dir_last=000) set dir_last=1%dir_last% set /a dir_last = %dir_last% - 1000 set /a dir_new=%dir_last% + 1 set dir_new=00%dir_new% set dir_new=%dir_new:~-3% md %dir_new%

Разобраться в коде предлагаю вам самим. 🙂 Основная возможность, которую я хотел показать данным примером, это использование ключа /a команды set для вычисления выражений. 😉

Batch script для начинающих

Мне 12 и я сам в этой теме плохо шарю, т.к. инфы в инете мало. Пж, без хейта.

Что такое батники и с чем их едят

Пакетный файл или в простонародье батник — это файл, который запускает командную сроку или сокращенно cmd, которая построчно интерпретирует команды, записанные в нем. Подробнее смотрите на https://ru.wikipedia.org/wiki/Пакетный_файл.

Первая программа и основные команды

Чтобы сделать батник, нужно сначала создать текстовый файл с именем test и изменить расширение c .txt на .bat. О том, как можно это сделать, читайте здесь: https://remontka.pro/file-extensions. У вас должен появиться файл с такой иконкой:

Нажимаем на него ПРАВОЙ кнопкой мыши. Должно появиться диалоговое окно. Нажмем «Открыть». Должен открыться блокнот, пишем:

@echo off echo Hello world! pause

В 1-ой сроке («@echo off») префикс ‘@ ‘ означает, что команда не будет выведена на экран(попробуйте его убрать 🙂 ), сама же команда (echo) выводит текст следующий за ней(см. строку 2), НО, если подать строку «off», все последующие команды будут действовать так, как будто перед ними стоит префикс ‘@’, «echo on», соответственно, выключает этот режим. Чтобы вывести символ «%», его нужно дублировать, потом поймете почему :-), для вывода пустой строки поставьте «.» после «echo»
В 3-ей строке команда выводит строку «press any key to continue . . .» (если у вас русский язык — «Для продолжения нажмите любую клавишу . . .») и останавливает программу до нажатия любой клавиши.

Наводим красоту

не эта :)

не делает ничего и служит комментарием к коду

rem Это самая лучшая прога в мире. 

Код включает русские символы и другие из ascii(например: «╬▓☼», можно скопировать с http://pascalguru.ru/psevdograf.html), иначе ascii символы превратятся в кракозябры:

chcp 65001

Следующий код код работает, как команда «pause», но ничего не выводит на экран и не реагирует на нажатие клавиш(я потом объясню, как это работает).

:m goto m

А этот — меняет заголовок окна на «name»

Заголовок окна

title name

Эта команда меняет цвет фона и текста, вместо a и b можно поставить любые шестнадцатеричные цифры(команда не сработает если a = b) см. таблицу ниже. Запись c одной буквой «а» аналогично записи «0a»

color ab

Таблица

Эта — досрочно завершает программу

exit

Переменные

Создать переменную можно с помощью команды set, синтаксис объявления следующий: P.S. это не совсем переменные, это скорее макросы (для тех к кто не знает C/C++ это именованный кусочек кода, имя которого заменяется на этот кусочек кода)

set a=Hello world

Если после «set» добавить флаг «/a» то:

    Переменной задастся значение выражения, а не его текст, например:

set a=2+2 > 2+2 set /a a=2+2 > 4

Чтобы обратиться к переменной, нужно окружить ее символами «%» (так %name%), пример кода:

set /a a=%b%+%b% echo %a%

Подробнее о переменных

Если добавить флаг «/p», то выводиться значение после символа » bash»>@echo off set /p a=Enter str echo %a% pause

следующий код вырезает строку от символа номер «a» до символа номер «b» НЕ включительно(счет идет с нуля, отрицательные числа — счет с конца от единицы). Если аргумент один, то он присваивается числу «b», а «a» = 0

%str:~a,b%

следующий заменяет подстроки «a» в строке на строки «b»:

%str:a=b%

Циклы и условия

Цикл можно создать с помощью команды «for», синтаксис следующий:

for %%i in (a b c) do ( cmd )
for %%i in (a b c) do cmd

(a b c) это список (не обязательно из 3-х элементов) и переменная %%i (нужно ставить символ после процентов, а не между) по очереди проходит по значениям в списке

Если добавить флаг «/l», то переменная в первый раз будет равна «a». К ней каждый раз будет прибавляться «b», пока она не станет больше «c»(тут размер ДОЛЖЕН равняться 3)

запустите этот код, тут все наглядно

@echo off chcp 65001 echo Начало for /l %%i in (1 1 10) do echo %%i echo Конец pause

Команда if выполняет код, если условие верно (или если поставить not после if, когда НЕ верно), вот операторы сравнения:

P.S. строки нужно брать в кавычки «%str%»==»Hello»

Как создать и запустить bat-файлы

Bat-файл – это текстовый файл, который содержит в себе набор команд для выполнения в командной строке. Такие файлы используются при работе с ОС Windows и обозначаются расширением .bat. Название bat-файла происходит от английского “batch file” – пакетный файл, продвинутые пользователи часто используют название “батник”.

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

Зачем нужны bat-файлы:

  1. Автоматизация задач. Например, для повторяющихся типов действий: копирование, переименование файлов, создание резервных копий. Благодаря bat-файлам, можно запустить серию команд одним нажатием кнопки, что экономит время и не требует необходимость вводить однотипные команды вручную.
  2. Выполнение скриптов. Bat-файлы используют для выполнения скрипта на командном языке, например, CMD или PowerShell. Это позволяет создавать и запускать скрипты для выполнения сложных задач без необходимости запуска каждой команды по отдельности.
  3. Конфигурация системы. Bat-файлы могут использоваться для настройки и конфигурации операционной системы Windows, например, чтобы изменять системные переменные, устанавливать параметры безопасности, настраивать сетевые подключения.

Если вы ищите надежный выделенный сервер с операционной системой Windows, предлагаем воспользоваться услугой Windows VDS/VPS от RU-CENTER.

Как создать bat-файл

Для создания bat-файла понадобится устройство с ОС Windows и любой текстовый редактор. Следуйте инструкции:

  1. Откройте текстовый редактор, например, Блокнот или Visual Studio Code.
  2. Создайте в нем пустой файл.
  3. Запишите команду в том виде, как бы вы вводите ее в командную строку (каждую новую команду указывайте на отдельной строке).
  4. Добавьте любую необходимую логику или условные операторы, например, if-else или циклы, чтобы определить, какие команды будут выполняться в зависимости от определенных условий.
  5. Сохраните файл с расширением .bat. Для этого выберите Сохранить как и укажите тип файла Все файлы, добавьте расширение .bat в конце имени файла (например, myscript.bat).
  6. Создания bat-файла завершено.

Запуск bat-файла

Есть несколько способов запустить bat-файл:

  1. Найдите bat-файл с помощью Проводника и дважды щелкните на него. Это запустит файл. Команды в нем будут автоматически выполнены в командной строке.
  2. Из командной строки. Откройте командную строку, перейдите в директорию, где находится bat-файл, и введите имя файла. Кликните Enter, чтобы запустить bat-файл.
  3. С помощью ярлыка на рабочем столе. Щелкните правой кнопкой мыши на bat-файле, выберите Отправить, затем выберите Рабочий стол (создать ярлык). После создания ярлыка переместите его на рабочий стол и дважды щелкните на нем для запуска.
  4. Через Планировщик заданий. Можно настроить запуск bat-файла в определенное время или при определенных событиях с помощью Планировщика заданий. Для этого откройте Планировщик, создайте новое задание и укажите путь к bat-файлу в разделе Действие.

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

Синтаксис написания bat-файла

При написании bat-файла необходимо учитывать следующие правила:

  1. Комментарии в bat-файлах начинаются с символа REM (от английского remark – замечание) или :: (двойные двоеточия) и используются для пояснения кода.
  2. Команды в bat-файле записываются на отдельных строках и выполняются последовательно, начиная с верхней строки.
  3. При использовании переменных для хранения значений в bat-файле, их имена должны начинаться с символа %, и значения переменных устанавливаются с помощью оператора SET, например:
  1. В bat-файле можно использовать условные операторы, такие как IF и FOR, для выполнения команд в зависимости от определенных условий.
  2. С помощью оператора FOR можно создавать циклы для выполнения команд несколько раз или по списку значений.

Настройка планировщика заданий (периодический запуск)

Чтобы настроить запуск bat-файла в заданное время используйте планировщик задач Windows:

  1. Откройте Планировщик, нажав Win + R, введите taskschd.msc и нажмите Enter.

  1. Нажмите на Создать задачу в правой части окна.
  2. Во вкладке Основные введите имя задачи и описание (необязательно), нажмите Далее.
  3. Во вкладке Действия нажмите на Создать, в выпадающем меню выберите Запуск программы.
  4. В строке Программа/скрипт укажите путь к bat-файлу, который вы хотите запускать. Кликните на кнопку Обзор, чтобы найти bat-файл на компьютере.
  5. Настройте остальные параметры по вашему усмотрению: вы можете указать условия запуска, триггеры, параметры задачи и т.д.
  6. Когда все настройки сделаны, нажмите ОК, чтобы сохранить задачу.

Теперь ваш bat-файл будет запускаться автоматически в заданное время или по указанным условиям заданным в планировщике задач.

Bat-файл: основные команды при написании

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

  • echo – для вывода текста или переменных в командную строку или в файл.
  • set – для определения или изменения значения переменной.
  • if – для выполнения команд в зависимости от определенных условий.
  • for – для создания циклов и повторного выполнения команд.
  • call – для вызова другого bat-файла из текущего.
  • pause – для остановки выполнения скрипта и ожидания, пока пользователь не нажмет клавишу.
  • rem – для добавления комментариев в скрипт. Комментарии игнорируются интерпретатором bat-файлов.
  • cd – для перехода в другой каталог.
  • del – для удаления файлов.
  • copy – для копирования файлов.

Bat-файл: переменные

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

Чтобы использовать переменные в bat-файлах, следует сначала задать ее с помощью команды set. Значение переменной указывается с помощью символа %.

echo My name is %NAME%

В этом примере значение переменной NAME задается как Ivan, и далее выводится на экран при помощи команды echo

В bat-файлах можно использовать несколько типов переменных:

  1. Строковые переменные:
  1. Числовые переменные:
  1. Параметры командной строки:
  1. Системные переменные:
  1. Временные переменные:

При подготовке материала использовались источники:
https://habr.com/ru/articles/64581/
https://habr.com/ru/sandbox/168937/
https://www.nic.ru/help/kak-sozdat6-i-zapustit6-bat-fajly_11640.html

Оцените статью