Как можно создать и запустить bat файл в ос windows 10, пошаговая инструкция

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

В случае деятельности 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. Последний вариант особенно удобен в том случае, когда выгрузка значений должна происходить на какой-либо сайт.

В чем польза BAT файла?

Автоматизация. Если раньше вам приходилось долго и нудно “вбивать” сложные коды в окно командной строки, пришло время расслабиться! BAT файл экономит время пользователя не только при работе с CMD, но и при взаимодействии с другими системами ПК. Например, вы можете запланировать выключение компьютера через определенный промежуток времени. Этот способ применения пакетного файла хорошо подойдет геймерам, ставящим установку игру на ночь. Запланируйте отключение системы к моменту завершения установки и не опасайтесь за перерасход электроэнергии.

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

При создании BAT файла используется петля (for), условный оператор (if) и оператор управления (goto). Документ запускается либо с помощью командной строки, либо с помощью другого пакетного файла при использовании команды CALL.

Что это за упомянутые ранее операторы объединения команд?

Это операторы &, && и ||. Они практически совсем не освещены в документации, но полезны в повседневности. Они позволяют объединять несколько команд в одну, т.е. примерно так:

command1 & command2
command1 && command2
command1 || command2

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

command1
command2

Оператор && гарантирует, что вторая команда будет выполнена только, если первая была выполнена успешно, т.е. с нулевым кодом возврата (он же %errorlevel%). Такие конструкции очень популярны в мире shell-сценариев Unix. Например:

      cd sources && make clean

Я был приятно удивлен, узнав, что cmd.exe тоже умеет выполнять такие конструкции. Это безопаснее и правильнее, нежели простое последовательное выполнение этих команд, и короче и проще, чем строгая проверка и обработка кодов возврата. Очень удобно при написании на скорую руку. Не менее полезен иногда и оператор ||. Суть его тоже логична – выполнить вторую команду, если первая дала сбой. Часто встречается в таких идиомах:

      cd sources || exit 1

Если перейти в каталог sources не удастся, то будет произведен выход с кодом ошибки 1. Если же первая команда отработает нормально, то вторая выполнена не будет. Например, такая простейшая защита помогла бы в случае с cd по UNC-адресу, описанному ранее.

Проверка условий и выбор вариантов. Команды 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 в Windows 10/8/7

Поскольку батник представляет собой обычный текстовый файл с необычным контентом, для его создания сгодится практически любой текстовый редактор. Разумеется, потребуется также знание синтаксиса языка командной строки. Использовать Word – не самый оптимальный способ, гораздо проще задействовать «Блокнот», но ещё лучше воспользоваться Notepad++, поскольку этот редактор обладает полезной «фишкой» – умеет подсвечивать синтаксис, облегчая задачу пользователям. Правда, в состав операционной система он не входит, его придётся скачивать.

В обоих случаях создание батника происходит по одинаковому сценарию: в меню «Файл» выбираем «Создать», заполняем файл содержимым, по окончании редактирования кликаем «Сохранить как», даём имя пакетному файлу, а в поле «Тип файла» указываем «Batch file».

В классическом «Блокноте» расширение необходимо написать руками, выбрав в поле «Тип файла» опцию «Все файлы».

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

  • перенос строк в таких файлах недопустим, он будет интерпретироваться неправильно;
  • правильной кодировкой будет UTF-8;
  • при использовании в командах кириллических символов, кодировку следует изменить с помощью специальной команды chcp 1251;
  • расширение BAT идентично CMD. Файлы, оканчивающиеся таким расширением, будут обработаны командным интерпретатором точно так же.

Есть и другие интересные моменты.

Использование длинных имён в BAT-файлах

Многие пользователи при практическом рассмотрении вопроса, как создать батник, в том числе с расширением CMD, сталкиваются с проблемой длинных имён, которые доступны в ОС Windows. Интерпретатор командной строки в этом отношении остался закоренелым ретроградом – он понимает имена файлов и каталогов в формате DOS, то есть длиной не более 8 символов. Как же решается подобная дилемма?

Один из наиболее известных способов – сокращение имени до 6 символов (исключая пробелы) и присвоение остатку окончания, состоящего из символа «тильда» (~) и цифры 1. Например, стандартное имя каталога Program Files будет выглядеть как Progra~1, папка Sound Blaster получит имя SoundB~1.

Казалось бы, вполне изящное решение. Но не во всех случаях. Скажем, у вас имеется несколько папок, начинающихся с одного имени. Типичный пример – установка в том же Program Files нескольких программных продуктов от компании Mozilla – в этом случае сокращённым именем будет Mozill, и если всем присвоить остаток ~1, то это будет неправильно. Выход – именовать файлы, присваивая номер в порядке возрастания. Получим последовательность для продуктов Firefox, Thunderbird и Sunbird в виде строк Mozill~1 для браузера, Mozill~2 для Thunderbird и Mozill~3 для органайзера.

Проблема в том, что если один из продуктов удалить, например, Firefox, оставшиеся две записи окажутся неработоспособными. Удалив Thunderbird, вы сделаете недоступным Sunbird. Наконец, такой способ позволяет дать имена лишь девяти файлам/папкам с одинаковым начальным именем. Так что подобный способ удовлетворительным назвать никак нельзя.

Второе решение – заключать длинные имена и пути в кавычки.

Кавычки в пакетных файлах

Если вы думаете, что знаете всё про то, как сделать BAT-файл, то, скорее всего ошибаетесь. Допустим, вам нужно указать один из параметров команды в кавычках. Сами кавычки синтаксисом не запрещены, но всегда нужно учитывать правила написания конкретной команды. Пускай нам нужно запустить экзешник scw.exe. Соответствующая команда, по идее, должна иметь вид

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

Тогда наша команда преобразится:

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

Этот метод более трудоёмкий, но он гарантированно рабочий.

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

Запуск программ в файле 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

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

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

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

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

Алгоритм создания

Процесс работы через «Блокнот» вовсе не сложный. Если вы раньше никогда этим не занимались, то вполне справитесь, узнав, как создать bat-файл и дополнять в нём команды. Начнём с создания. Здесь действуйте строго по алгоритму:

  1. Создаёте текстовый документ, он у вас первоначально получится с расширением txt. Произвести эту операцию можно несколькими способами, некоторые зависят от уровня установленной у вас Windows:
    • В папке, выбранной вами, кликнуть правой кнопкой на поле, откроется меню, там выбираем «Создать» — «Текстовый документ»;
    • Запустить «Блокнот» через «Пуск», выбрав «Все программы» — «Стандартные» — «Блокнот» (для Windows 7);
    • В поздних (после 7) версиях Windows открыть «Блокнот» можно также через «Пуск»: идёте через «Все приложения», далее «Стандартные» — «Windows» и там уже в списке выбирайте «Блокнот»;
    • Вызовите системное окно команд посредством комбинации Win+R, в строке введите «notepad», нажмите «Ok».
  2. Впишите текст команд. Для пробы запишите, например, «START taskmgr.exe» — запуск диспетчера задач. «START» говорит интерпретатору команд, что нужно запустить какую-либо программу, далее указывается экзешник программы.
  3. Укажите путь, где сохранить созданный документ.
  4. Указываете в окне сохранения:
    • в строке «Тип» — «Все файлы»;
    • в строке «Имя» вводите название и расширение bat, дописав его после названия, поставив точку между названием и расширением, — например, «file.bat».
  5. Кликаете на «Сохранить».

В указанной вами папке появится пакетный файл с расширением .bat.

Запуск файла

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

Редактирование

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

Откройте документ посредством текстового редактора. Удобно это выполнить, нажав на bat-файл правой кнопкой, в открывшемся меню выбирайте «Изменить».

Запустится «Блокнот» — там и можно редактировать команды, изменять содержание, вносит дополнения.

Применение Dr.Batcher

Новичку, только начинающему работать с командным интерпретатором, использующему его довольно редко, достаточно «Блокнота». Если хотите выйти на более высокий профессиональный уровень, рекомендуем применять утилиту Dr.Batcher. В Dr.Batcher можно нумеровать страницы, там есть поддержка закладок, список системных команд, применяемых в bat, введённые команды подсвечиваются.

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

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

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

Запустите Dr.Batcher.

  1. Откройте новую страницу: «File» — «New» или кликните на иконку чистого листа, находящуюся под меню «File».
  2. В диалоговом окне кликните на «Empty Batch File».
  3. Образуется окно программы, где будут функции для работы с bat.
  4. Введя нужный текст, сохраните.

Как перенаправить стандартный вывод в файл?

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

echo Cleaning up the target directory >>%LOGFILE%...echo The target directory has been cleaned >>%LOGFILE%

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

@echo offset OUTPUT=out.htmlif "%STDOUT_REDIRECTED%" == "" (set STDOUT_REDIRECTED=yes cmd.exe /c %0 %* >%OUTPUT%exit /b %ERRORLEVEL%)echo ^<html^>echo ^<head^>echo ^<title^>This is a greeting page^</title^>echo ^</head^>echo ^<body^>echo Hello World!echo ^</body^>echo ^</html^>

Здесь делается то же, что и раньше, но с перенаправлением
стандартного вывода в файл out.html. Делается это простым способом –
перезапуском сценарием самого себя. Сначала проверяется, не установлена
ли переменная окружения STDOUT_REDIRECTED. Если она установлена, значит,
сценарий уже перезапущен с перенаправленным выводом и можно просто
продолжить работу. Если же переменная не установлена, то мы ее
устанавливаем и перезапускаем скрипт (cmd.exe /c %0) с таким же набором
параметров, что и исходная команда (%*) и перенаправленным в файл
стандартным выводом (>%OUTPUT%). После завершения выполнения
«перенаправленной» команды выходим.

Такое «единовременное» перенаправление имеет и еще один неочевидный
плюс: файл открывается и закрывается только один раз, и всем командам и
дочерним процессам передается дескриптор уже открытого файла. Во-первых,
это чуть-чуть улучшит производительность (жизнь удалась – сроду бы не
подумал, что буду когда-нибудь писать о производительности в
bat-файлах). Во-вторых, это поможет избежать проблемы с невозможностью
открыть файл для записи. Такое может случиться, если после выполнения
одной из команд останется «висеть» какой-нибудь процесс. Он будет
держать дескриптор интересующего нас файла и перенаправление вывода в
этот файл для всех последующих команд провалится. Проблема может
показаться надуманной, но однажды она украла у меня 2 часа жизни…

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

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

Adblock
detector