Как написать командный файл для windows

Командный файл — что это такое?

Что такое командный файл?

Командный файл — это по сути простой документ, который содержит в себе команды командной строки. У него существует ещё несколько названий: пакетный файл, сценарий, bat-файл, батник и т.д. Последнее название исходит из его расширения .bat (реже .cmd ).

Для чего нужен командный файл?

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

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

Хорошо облегчает? Даа.

Открыть такой файл и посмотреть что внутри легко. Достаточно просто кликнуть по нему ПКМ и выбрать в контекстном меню Открыть с помощью стандартного Блокнота.

Как создать командный файл?
Тут тоже всё просто. Открываете Блокнот, пишите команды и сохраняете с расширением .bat

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

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

сохраняем с нужным расширением и запускаем.

Вот и всё на этом. С базовыми знаниями что такое командный файл Вы ознакомились.

Язык интерпретатора Cmd.exe. Командные файлы

Язык интерпретатора Cmd.exe. Командные файлы

Язык оболочки командной строки ( shell language ) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:

и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows . Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если вам приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.

Вывод сообщений и дублирование команд

По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,

Для восстановления режима дублирования используется команда ECHO ON . Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @ , например:

Таким образом, если поставить в самое начало файла команду

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

Команда ECHO . (точка должна следовать непосредственно за словом «ECHO») выводит на экран пустую строку. Например,

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

Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO , в определенный текстовый файл. Например:

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

Использование параметров командной строки

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

Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %* . При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то «лишние» переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:

Читайте также:  Sources install wim при установке windows

Если запустить его из командной строки с двумя параметрами, например

то на экран выведется сообщение

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT , которая изменяет значения замещаемых параметров с %0 по %9 , копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0 , значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9 . Если же такой параметр не задан, то новое значение %9 — пустая строка.

Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3 , параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3 , параметры %3 – %9 – пустые строки.

При включении расширенной обработки команд SHIFT поддерживает ключ /n , задающий начало сдвига параметров с номера n , где n может быть числом от 0 до 9.

Например, в следующей команде:

параметр %2 заменяется на %3 , %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0) , который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.

В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.

Таблица 3.1. Операторы для заменяемых параметров
Операторы Описание
%

Fn

Переменная %n расширяется до полного имени файла
%

Dn

Из переменной %n выделяется только имя диска
%

Pn

Из переменной %n выделяется только путь к файлу
%

Nn

Из переменной %n выделяется только имя файла
%

Xn

Из переменной %n выделяется расширение имени файла
%

Sn

Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла
%

$PATH:n

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

Данные синтаксические конструкции можно объединять друг с другом, например:

DPn — из переменной %n выделяется имя диска и путь,

NXn — из переменной %n выделяется имя файла и расширение.

Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 3.1, к параметру %1 даст следующие результаты:

Командные или пакетные файлы (command/batch files)

Предостережение! Данная тема должна осваиваться пользователем(!) именно в том объеме, который приведен здесь, то есть — в единицах процентов. Максимум — еще пару «уровней» вглубь, если возникнет такая потребность. Углубление знаний до уровня, близкого к полному, заведет в тупик. Подобные задачи следует решать с помощью языков программирования высокого уровня, что упростит решения и значительно увеличит скорость, но относится к сфере профессионального выполнения.

По-прежнему, как 10, 20 и 30 лет назад, у пользователя сохраняется возможность индивидуально оптимизировать свою работу, переложив часть интеллектуального труда на плечи компьютера.

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

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

Эти файлы являются текстовыми, имеют расширение bat или cmd и содержат простейшие команды, понимаемые операционной системой, которые могут быть выполнены в командной строке.

Основные области применения.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Для меня будет крайне радостно, если вы воспользуетесь хотя бы вариантами 2—4. От вариантов 7 и 8 вам, скорее всего, не уйти.

Какое из двух приведенных расширений использовать? Расширение bat использовалось для DOS (16-разрядный интерпретатор command.com), а cmd возникло для интерпретатора командной строки cmd.exe. Поэтому ряд действий может не производиться из bat-файла, либо исполняться медленнее, хотя большинство пользователей этого никогда не заметит. А bat-файлы рассматриваются Windows в качестве командных.

Некоторые символы в командных файлах нельзя использовать в строках, не заключенных в кавычки, так как они имеют специальное назначение. Например: ( ) ^ & |.

Внимание! Русский текст для корректного исполнения/отображения должен быть набран в кодировке DOS (ASCII), то есть CP866. В FAR вы должны видеть ANSI (Win) на месте подсказки к клавише F8 . Последняя является переключателем кодировки. Либо переопределить ее вызовом списка кодировок клавишей Shift+F8 . Поскольку Блокнот такой возможности не поддерживает, выводы можете сделать сами.

Важный момент связан с запуском неправильно работающей и/или зависшей программой.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Пример (очень глупый, зато и очень наглядный):

Разберем программу построчно.

@echo off (отключить вывод сообщений)

cls (очистить экран, от CLear Screen)

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

echo Интересно. (Просто бла-бла на экране)

echo. (Точка означает вывод пустой строки, то есть зрительное отделение)

echo Запуск Блокнота (Информация для пользователя)

start notepad (Запуск программы)

Wordpad (Запуск программы. Cлово start опущено. Расширение (exe) не указано, как и для Блокнота, так как программы находятся в папках, описанных системной переменной PATH.)

pause (выведет фразу «Press any key to continue. » и будет ожидать нажатия, чтобы вы все смогли прочитать.)

exit (закроет окно, иначе придется печатать эту команду руками, либо жать крестик, что для DOS-сессии категорически НЕДОПУСТИМО). Обратите внимание, что в бухгалтерском деле до сих пор используются DOS-приложения. Если вы их закроете крестиком, то почти неизбежна потеря информации или даже разрушение базы данных.

Вывод сообщений

Возможно, что вам нравится, когда компьютер говорит сам с собой, а потом сообщает это же и вам. Мне — нет.

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

Обработка аргументов

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

Такая возможность предусмотрена:

  • %0 — имя запущенного пакетного файла с путем.
  • %1 — первый переданный аргумент.
  • %2 — второй переданный аргумент.
  • %* — все переданные аргументы одной строкой.

Комментарии

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

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

Указание после команды знака амперсанда (&) позволяет использовать комментарий после него, то есть для данной строки. Важно, что двоеточия могут блокировать некоторые строки. В этих случаях лучше воспользоваться rem.

Далее, комментарии, внесенные в текст программ для пояснения, будут окрашены .

Некоторые полезные примеры

Не надо пробовать сделать это ручками — замучаетесь. Зачастую проще скопировать строку из готового файла и отредактировать её.

Пример архивации WinRar

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

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Пример копирования

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Имена файлов и путь

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

«C:\Documents and Settings\»

Переменные

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

Задание значений переменной осуществляется командой set, например, команда

создаст переменную var, содержащую строку «корова».

Использование ключа /P позволяет осуществить ввод пользователем.

SET /P variable=[строка_подсказки]

Ключ /A позволяет провести вычисления с использованием более двух десятков операторов.

Полная справка о работе команды может быть получена вызовом в командной строке

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Ветвление (If)

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

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Метки

Поскольку язык достаточно примитивный и разрабатывался давно, он поддерживает так называемые безусловные переходы (переход к метке) для упрощения решений линейного программирования. Ряд ситуаций за счет этого решается на порядок быстрее и проще, чем в современных языках. Не надо следовать за безголовыми критиками данного подхода, это — данность, которой надо пользоваться.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Цикл For

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

Полная справка о работе команды может быть получена вызовом в командной строке

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

Для ясности, приведем основные направления использования команды FOR.

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

Я очень долго обдумывал необходимость включения этой темы в курс обучения в связи с ее противоречивостью. С одной стороны, это, как минимум, на порядок повышает сложность. С другой — на несколько порядков расширяет возможности и «интеллектуальность» создаваемых программ. Перелом произошел при очередной личной необходимости создания диалоговых возможностей для пользователей. Восстановление знаний и попытки разобраться с «записками сумасшедшего», равномерно рассеянными на просторах Интернета, перевесили. Описание будет, но не войдет в очный курс.

Некоторые теоретические предпосылки.

  1. Программа может выполняться очень долго, вплоть до нескольких часов. Пользователь не должен запустить эту процедуру случайно, требуется подтверждение.
  2. Для запуска может потребоваться выбор варианта, например, долгий (архивируем все) или краткий (только файлы *.doc). Суть: тонкая настройка процесса действиями, понятными для рядового пользователя.
  3. Программирование выбора фиксированных существующих мест, то есть, какую из 5 папок обработать типовой процедурой.
  4. Один из моих случаев: создать архив чего (то есть быстро/медленно) и где (локально, в сети или и в обоих расположениях, что также скажется на времени)?
  5. .

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

В приведенном ниже примере создано примитивнейшее (но реальное) меню из двух пунктов, контролирующее факт запуска.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Дополнительный функционал

Сюда будет уходить всякая «экзотика», которая может пригодиться для реализации мелких идей. Это — почти готовые решения и в зачет заданий в чистом виде (без внедрения) они не пойдут.

P.S.! Большинство идей приходят из студенческих работ.

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

  1. Студент I/II курса ВХК РАН

Задание для разработки

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

  1. Студент I/II курса ВХК РАН

Некоторые полезные ссылки

К сожалению, часть ссылок на очень качественный материал отсюда убрана, так как ресурсы исчезли. Делайте выводы.

  1. CMD/BAT — Форум программистов и сисадминов
  2. Описание основных возможностей сценариев командной строки
  3. Командная строка. Сайт посвящен именно этой теме. Не для рядовых пользователей, но есть много полезных советов.
  4. Командные файлы Windows. Страница значительно расширяет материал и содержит важную информацию.
Читайте также:  Windows нет zip распаковки
Оцените статью