Как создать bat-файл в windows 7/10
Содержание:
- Как создать «батник» в операционной системе Windows 7
- Основные операторы bat-файла:
- Массовая обработка файлов. Команда for
- Как перенаправить результат выполнения команд в файл
- Горячие клавиши
- Часть вторая. Синтаксис при написании bat-файлов
- Проверка условий и выбор вариантов. Команды if и goto
- Примеры bat файлов
- Как одновременно выполнить несколько команд в командной строке
Как создать «батник» в операционной системе Windows 7
Сделать этот файлик может любой пользователь на компьютере, который имеет достаточно прав для создания и сохранения файлов. На счет выполнения немного сложнее — выполнение «батника» должно быть разрешено как и отдельно взятому пользователю, так и операционной системе в целом (запрет иногда накладывается в целях безопасности, ведь исполняемые файлы не всегда создаются для благих дел).
Будьте внимательны! Никогда не запускайте на компьютере файлы с расширением .BAT, скачанные из неизвестного или подозрительного ресурса, а также не используйте при создании такого файла код, в котором вы не уверены. Исполняемые файлы такого типа умеют шифровать, переименовывать или удалять файлы, а также форматировать целые разделы.
Способ 1: использование расширенного текстового редактора Notepad++
Программа Notepad++ является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.
- Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись «Создать», в выпавшем сбоку окошке щелчком левой кнопки мыши выберите «Текстовый документ»
На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник. После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт «Edit with Notepad++». Созданный нами файл откроется в расширенном редакторе.
shutdown.exe -r -t 00
После запуска этот батник перезагрузит компьютер. Сама команда означает запуск перезагрузки, а цифры 00 — задержку ее выполнения в секундах (в данном случае она отсутствует, то есть перезапуск выполнится незамедлительно).
Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт «Файл», затем нажмите на «Сохранить как».
Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт «Batch file».
К уже заданному ранее слову или фразе без пробела допишется «.BAT», и получится так, как на скриншоте ниже.
После нажатия на кнопку «OK» в предыдущем окне, на рабочем столе появится новый файл, который будет выглядеть как белый прямоугольник с двумя шестеренками.
Способ 2: использование стандартного текстового редактора Блокнот
Он обладает элементарными настройками, которых вполне хватает для создания самых простых «батников». Инструкция абсолютно аналогична предыдущему способу, программы лишь немного отличаются в интерфейсе.
- На рабочем столе двойным щелчком откройте ранее созданный текстовый документ — от откроется в стандартном редакторе.
В окошке редактора слева вверху нажмите на кнопку «Файл» — «Сохранить как…». Откроется окно Проводника, в котором необходимо указать место сохранения конечно файла. Здесь отсутствует способ задания необходимого расширения с помощью пункта в выпадающем меню, поэтому просто нужно дописать к названию «.BAT» без кавычек, чтобы получилось так, как на скриншоте ниже.
Оба редактора отлично справляются с созданием батников. Стандартный блокнот больше подходит для простых кодов, в которых используются несложные одноуровневые команды. Для более серьезной автоматизации процессов на компьютере необходимы продвинутые батники, которые с легкостью создаются расширенным редактором Notepad++.
Рекомендуется запускать файл .BAT от имени администратора, чтобы не возникало проблем с уровнями доступа к определенным операциям или документам. Количество задаваемых параметров зависит от сложности и назначения задачи, которую необходимо автоматизировать.
В этой статье рассмотрим два способа создания bat-файла: с помощью Проводника и с помощью Блокнота. Этого будет достаточно, чтобы создавать новые bat-файлы, но сперва определимся, для чего они нужны. Если совсем просто, то bat-файл нужен для того, чтобы один раз записать набор команд для командной строки Windows, а затем выполнять их в любое время не набирая каждый раз. В общем, идеальный вариант для ленивых и/или системных администраторов. =)
Сразу перейду к делу:
Основные операторы bat-файла:
- ECHO: отображает текст в DOS-окне;
- ECHO OFF: отменяет показ текста команд в DOS-окне, показывая подсказку и выполненный результат;
- @ECHO OFF: отменяет показ текста команд и подсказок, показывая выполненный результат;
- XCOPY: используется для копирования каталогов и файлов с добавочными параметрами;
- START: запускает исполняемый файл .exe со своим стандартным приложением, открывает каталог;
- FOR/IN/DO: применяется для указания файлов;
- MKDIR: создает каталоги;
- REM: для ввода строки комментария в программе;
- RMDIR: для удаления каталогов;
- DEL: для удаления файлов;
- COPY: для копирования файлов;
- TITLE: редактирование заголовка окна.
Применение некоторых из перечисленных команд показано на примере ниже. Необходимо отметить, что команда @echo off скрывает путь выполняемой команды, отображаемый cmd на DOS-экране.
Команда @echo off скрывает путь выполняемой команды
Запуск программ в файле bat происходит с помощью команды start и указанием имени запускаемой программы.
Запуск программ в файле bat происходит с помощью команды start
Также в файле может быть прописан полный путь до исполняемого файла.
В файле прописан полный путь до исполняемого файла
Обе эти записи для firefox работают корректно. Однако, они обе корректны только для зарегистрированных в Windows приложений. Если попробовать запустить портативную программу (например, filezilla) без прописи всего пути к запускаемому файлу, она не запустится.
Массовая обработка файлов. Команда for
Команда for позволяет организовать выполнение повторяющихся однотипных действий. Можно
использовать ее для того, чтобы вывести на экран числа от одного до десяти, как показано на
следующем листинге.
for /l %%i in (1,1,10) do echo %%i
Переменная i называется счетчиком цикла. В силу своеобразия синтаксиса
команды for, имя счетчика цикла должно состоять из одной буквы. Причем, если
мы пишем командный файл, то перед именем счетчика цикла надо поставить сдвоенный знак
процента, если же мы просто набираем команду в командной строке, то одиночный.
Логика работы этой команды такова. После слова in указан диапазон изменения
счетчика цикла. В данном варианте команды это тройка чисел: начальное значение счетчика, шаг
счета, предельное значение счетчика. При выполнении команды командный процессор сначала
присвоит переменной i значение 1, а потом на каждом шаге
цикла будет увеличивать его на 1, пока оно не превысит 10.
Очевидно, таких шагов получится десять. Если бы в качестве шага счета мы указали число
2, то цикл выполнился бы пять раз. На каждом шаге цикла выполняется тело
цикла, написанное после слова do. В приведенном примере это команда echo,
которая выводит на экран текущее значение счетчика цикла.
Наверно можно придумать ситуацию, когда что-то подобное на самом деле требуется, но обычно
команда for используется для перебора и обработки файлов. Надо сказать, что в
достаточно простых случаях массовая обработка файлов выполняется с помощью подстановочных
символов. Если, мы хотим всем файлам в текущем каталоге заменить расширение
.htm на .html, мы вводим команду ren *.htm
*.html. Но если то же самое надо сделать не в одном каталоге, а в дереве каталогов,
то без команды for не обойтись. Приведенный ниже командный файл выполняет эту операцию для
всех htm-файлов в подкаталоге website текущего каталога. Точнее, во всем дереве каталогов,
которое находится внутри website.
for /r website %%i in (*.htm) do ren %%i %%~ni.html
Ключ /r указывает на необходимость обхода каталога website и
всех его внутренностей. Если его не указать (но тогда и каталог указывать не разрешается), то
обработаны будут только файлы в текущем каталоге. Диапазоном значений счетчика цикла в данном
варианте команды является множество всех файлов с расширением .htm,
находящихся внутри каталога (точнее, дерева) website. Странная на первый
взгляд запись ~ni означает, что из значения переменной i
требуется выделить только имя файла. В языке команд MS-DOS предусмотрено несколько таких
модификаторов, например, запись ~хi обозначает расширение файла. Все
модификаторы описаны в справке по команде for.
Тело цикла может состоять из нескольких команд, заключенных в скобки.
@echo off for /r website %%i in (*.htm) do ( rem Выводим имя файла echo %%i rem Переименовываем файл ren %%i %%~ni.html )
Как перенаправить результат выполнения команд в файл
Часто, при выполнении сложного bat файла в автоматическом режиме проверить результаты его работы бывает затруднительно по многим причинам. Поэтому проще записывать результаты работы команд batch файла в текстовый файл (лог-файл). а потом анализировать правильность работы bat файла по этому логу.
Перенаправить результат работы команд bat файла в лог-файл достаточно просто. Далее будет показано, как это можно сделать.
Создайте 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.txt с корне диска С. Файл создается для примера. Эта команда записывает в файл C:\test.txt слово test
Пятая строка выводит в лог-файл пояснение, что следующая команда выполняет копирование файла из одного места в другое.
Команда в шестой строке копирует созданный файл C:\test.txt в файл C:\Old_test.txt, т.е. создается копия файла под новым именем.
Последняя, седьмая строка содержит команду вывода времени завершения работы пакетного файла. В сумме с записью в лог-файл времени начала работы пакетного файла эти два значения времени дают возможность оценить время работы пакетного файла.
Сохраните этот пакетный файл под именем, например, 1.bat
Предположим, что отчет о работе пакетного файла мы бы хотели хранить в отдельной папке и каждый день записывать отчет с новым именем файла, чтобы была возможность в любой из дней обратиться к логам за предыдущие дни. Причем, имя лог-фала хотелось бы иметь в виде даты работы пакетного файла. Чтобы все это реализовать создадим на диске С (например) папку с именем LOG, т.е. полный путь к ней будет выглядеть C:\LOG. Созданный пакетный файл 1.bat будем запускать следующей командой:
1.bat>C:\LOG\%date~-10%.txt
Если пакетный файл будет запускаться из Планировщика, то нужно указать полный путь с bat-файлу. Помните, что если в пути есть пробелы, то надо использовать либо кавычки, либо формат 8.3. Т.е., если путь к bat-файлу C:\Program Files\1.bat, например, то в командной строке Планировщика для запуска bat-файла нужно указать одну из следующих строк:
"C:\Program Files\1.bat">C:\LOG\%date~-10%.txt C:\Progra~1\1.bat>C:\LOG\%date~-10%.txt
После запуска файла 1.bat в папке C:\LOG будет создан файл с именем, равным дате запуска bat-файла, например, 13.01.2004.txt Это и будет отчет о работе пакетного файла 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 (соответствующие теги могут быть выведены в лог-файл так, как выводились комментарии в примере 1.bat) и скопировать его на корпоративный сервер.
Горячие клавиши
Начнем с горячих клавиш, ведь сначала необходимо изучить, что нам может дать рабочая среда.
F1 — В консоли эта клавиша работает в точности как и стрелка вправо, т.е. выводит по одному символу из последней введенной (либо выбранной в истории) команды.F2 <символ> — Выводит последнюю введенную команду до указанного символа. Например, если последняя введенная вами команда выглядела вот так:
то после нажатия комбинации клавиш
F2 5
вы получите:
F3
— Выводит последнюю, и только последнюю, в истории команду целиком.
F5
— Выводит последние введенные команды по порядку, также как и стрелка вверх.
F6
— Вставляет символ EOF на текущую позицию командной строки, что аналогично нажатию комбинации Ctrl Z.
F7
— Диалоговое окно, содержащее историю команд.
Alt F7
— Очищает историю команд.
— Перебирает команды, которые начинаются с символов уже введенных в командную строку.
Если перед нажатием
F8
ничего не вводить, то эта клавиша будет работать как и стрелка вверх, но с небольшим отличием — перебор строк будет осуществляться циклично, т.е. после первой команды из списка будет выведена последняя.
F9 <число>
— Вставляет команду из истории под соответствующим номером. К примеру, в ситуации приведенной на скрине выше при нажатии комбинации
F9 4
в консоли появится:
Часть вторая. Синтаксис при написании bat-файлов
- Каждая команда вводится с новой строчки;
- Все команды выполняются последовательно за исключением тех случаев, когда внутри самого батника присутствует переход к определённой его части;
- Комментарии в пакетный файл могут быть добавлены двумя способами:
— либо после двух двоеточий ::переход к части копирования — либо при помощи команды goto, т.е. вводится команда goto, потом место для перехода, а между ними сам комментарийgoto begin ---------------------------------------- Это батник служит для резервного копирования дипломной работы ---------------------------------------- begin
- Если команду необходимо ввести с атрибутом, то сначала вводим команду, затем пробел, слэш и, собственно, сам ключ copy /Y Чтобы посмотреть список возможных атрибутов к конкретной команде, нужно в командной строке ввести команду, затем пробел, слэш и знак вопроса dir /?
- Для скрытия окна терминала выполняемой команды можно в начале строки поставить знак собачки @, если же требуется скрыть отображение выполнения всех команд, то проще (чтобы не ставить собачку в каждой строчке) в начале батника указать @echo off здесь команда echo off скрывает окна, а собачка впереди неё запрещает отображение выполнения самой echo off
- Все директории внутри команд, для исключения возможных ошибок, будем вводить в кавычках;
- По умолчанию при работе с кириллическим текстом на выходе вы можете получить иероглифы, при работе с папками/файлами, имеющими русские имена, вообще может ничего не получиться, это происходит из-за используемых кодировок, поэтому для исключения подобных неприятностей в начале пакетного файла будем указывать кодировку, корректно работающую с кириллицей следующей командой chcp 1251
- Есть команды (например, удаление файлов, форматирование), которые могут потребовать подтверждения действий. Порой это бывает очень нежелательно, в таком случае, можно вписать ответ заранее в сам пакетный файл. Ответ записывается ДО! команды и отделяется от неё вертикальной чертой |Y|del
- В командной строке (а значит и в пакетных файлах) при указании директории иногда бывает удобнее пользоваться переменными, нежели прописывать весь путь cd %APPDATA%
Проверка условий и выбор вариантов. Команды if и goto
Команда if позволяет выделять в командном файле группы команд, которые выполняются или не
выполняются в зависимости от определенных условий. Для чего это нужно?
Проверка условия — почти необходимая мера при создании командных файлов,
использующих параметры. Перед тем, как начинать работу, командный файл, вообще говоря, должен
удостовериться в том, что ему передан корректный набор параметров. В противном случае велик
риск, что он выполнится неверно или безрезультатно, а пользователю останется только гадать, в
чем же проблема. Более того, если командный файл удаляет, перемещает или перезаписывает
какие-либо данные, то при некорректных параметрах он может даже нанести ущерб.
На следующем листинге показан уже знакомый вам командный файл компиляции хелп-файла. В начало
командного файла добавлена проверка первого параметра на непустоту
Обратите внимание на такую
особенность синтаксиса: для операции сравнения используется сдвоенный знак равенства. Если
первый параметр оказывается непустым, срабатывает команда goto, которая
«перебрасывает» командный процессор к указанной метке
В данном случае имя
этой метки compile. Обратите внимание, что там, где метка находится, ее имя предваряется
двоеточием, а в команде goto нет. При пустом первом параметре командный процессор переходит к
следующей строке, которая выдает сообщение об ошибке. А потом к следующей, которая
перебрасывает его в самый конец файла к метке с именем finish.
@echo off rem Проверяем, задан ли параметр if not "%1"=="" goto compile rem Если параметр пуст, выдаем сообщение об ошибке echo Не указано имя проекта хелп-файла rem и переходим в конец командного файла rem к метке finish goto finish rem Это метка с именем compile :compile rem Ниже расположены команды компиляции rem Путь к компилятору хелп-файлов set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Путь к каталогу, в котором находятся проекты хелп-файлов set project_path=e:\work\projects\help-projects rem Вызываем компилятор для обработки конкретного проекта, rem имя которого передаем в первом параметре %help_compiler% %project_path%\%1.hpj rem Это метка с именем finish :finish
Скажем прямо, предложенный способ проверки параметра не самый удачный.
Во-первых, если пользователь по ошибке укажет в качестве параметра имя несуществующего файла,
командный файл этим удовлетворится и предпримет попытку компиляции. Более правильный способ
— проверить, существует ли такой файл в действительности. Для этого в языке команд
MS-DOS предусмотрено специальное слово exist. Поэтому лучше было бы написать:
if exist %1.hpj goto compile.
Во-вторых, активное использование команды goto (т.н. безусловного перехода) и
меток сильно запутывают код. Технически они ничем не плохи, но отлаживать и сопровождать
командный файл, написанный в таком стиле, довольно неудобно. Поэтому программисты издавна
считают безусловный переход приемом нежелательным. Ниже показан более правильный, с точки
зрения стиля программирования, структурированный вариант, в котором используется конструкция
if…else. Работает она так: если условие истинно, выполняются
команды в скобках после if, а если ложно, то в скобках после else.
@echo off rem Проверяем, задан ли параметр if not exist %1.hpj ( rem Если параметр пуст, выдаем сообщение об ошибке echo Такого проекта хелп-файла не существует. ) else ( rem Ниже расположены команды компиляции rem Путь к компилятору хелп-файлов set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Путь к каталогу, в котором находятся проекты хелп-файлов set project_path=e:\work\projects\help-projects rem Вызываем компилятор для обработки конкретного проекта, rem имя которого передаем в первом параметре %help_compiler% %project_path%\%1.hpj )
Обратите внимание на отступы от левого края. Они необязательны, но делают текст командного
файла более читабельным
Приведем еще один пример работы с проверками. Следующий командный файл создает каталог с
именем help-files (предположим, для выгрузки в него скомпилированных
хелп-файлов). При этом, если каталог с таким именем уже существует (и в нем, вероятно,
находятся старые хелп-файлы, которые не хотелось бы терять: вдруг новые окажутся хуже?),
командный файл присваивает ему расширение bak. Но если каталог help-files.bak
уже существовал, то командный файл его удаляет (будем считать, что одной резервной копии нам хватит).
if exist help-files.bak rd help-files.bak if exist help-files ren help-files help-files.bak md help-files
Примеры bat файлов
С помощью пакетных файлов можно делать огромное количество различных действий, которые очень сложно/долго, а в некоторых ситуациях, просто невозможно выполнить без использования bat файлов, т.к. необходимо либо приобретать специальный софт под конкретную задачу (пример — массовая конвертация картинок в папке(ах) по ключу в названии, либо самостоятельно писать такую программу на каком-либо языке программирования, что сможет далеко не каждый, да и целесообразность этого, для разового действия минимальна. На нашем сайте есть несколько примеров использования пакетных файлов для решения специализированных задач, которые, возможно, смогут вам помочь.
- Как автоматизировать запуск bat-файлов
- Как автоматически ответить на запрос о подтверждении с помощью bat-файла
- Как выполнить цикл определенное число раз в bat-файле
- Как добавить комментарии в bat-файл
- Как дождаться появления определенного файла в папке с помощью bat-файла
- Как завершить процесс (программу) с помощью bat-файла
- Как запретить повторный запуск приложения с помощью bat-файла
- Как зациклить выполнение команды с помощью bat-файла
- Как из одного bat-файла запустить другой
- Как изменить IP адрес компьютера с помощью bat-файла
- Как изменить дату с помощью bat-файла
- Как изменить значение параметра в реестре с помощью bat-файла
- Как изменить название процессора в Windows с помощью bat-файла
- Как импортировать значения переменных реестра с помощью bat-файла
- Как использовать символ процента в bat-файле
- Как настроить кодировку шрифтов (исправить иероглифы, кракозябры) в bat-файле
- Как отключить вывод на экран команд при выполнении bat-файла
- Как отправить сообщение по сети из bat-файла
- Как переименовать файлы по маске с помощью bat-файла
- Как перенаправить результат выполнения команд в лог-файл с помощью bat-файла
- Как присвоить переменной значение из реестра с помощью bat-файла
- Как проверить наличие прав администратора с помощью bat-файла
- Как сделать автоматическое создание резервной копии данных с помощью bat-файла
- Как сделать резервную копию файлов с сервера FTP с помощью bat-файла
- Как сделать экспорт реестра с помощью bat-файла
- Как сменить аудио устройство по умолчанию с помощью bat-файла
- Как создать бекап на сервере с подстановкой даты в имя архива с помощью bat-файла
- Как создать папку с помощью bat файла
- Как создать папку с именем равным текущей дате с помощью bat-файла
- Как создать паузу перед выполнением следующей команды с помощью bat-файла
- Как создать файл с произвольным именем с помощью bat-файла
- Как удалить файлы определенного типа с помощью bat-файла
- Как узнать имя компьютера с помощью bat-файла
- Как узнать разрядность версии Windows с помощью bat-файла
Как одновременно выполнить несколько команд в командной строке
Для объединения команд в командной строке в одну строку, используются специальные символы, которые называются символами условной обработки. У командного процессора в MS-DOS и интерпретатора командной строки Windows в виде COMMAND.com или CMD.exe их существует в количестве пяти штук, но нас интересует только три из них.
Для экранирования описанных ниже символов , , следует использовать специальный символ .
Символ: и Написание в одну строку: (команда 1 & команда 2) && команда 3
В некоторых случаях может понадобится написать более сложные условия выполнения команд в одной строке, где от результата выполнения команды зависят дальнейшие действия. Здесь на помощь придут операторы ( и ), позволяющие группировать команды. К примеру, нужно проверить наличие файла по адресу F:data.txt, и если он есть — открыть его в Блокноте, если же его нет — предварительно скопировать его по адресу D:data.txt и уже после этого открыть в Блокотне.
В прочем ничто не мешает изменить условия, заменив операторы, и подстроив команды под нужный Вам сценарий.