Командные файлы для windows dos

Командные или пакетные файлы (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.

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

Читайте также:  Transmission linux console start

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

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

Пример архивации 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 dos

Материал по теме «Командные файлы»

1. Определение командного файла. Командные (пакетные) файлы — особая категория исполняемых файлов.

Расширение: *.bat (от англ. batch — «пакет», «группа»). Запуск командного файла осуществляется так же, как запуск исполняемой программы, то есть, указывается имя файла и, если требуется, параметры.

Читайте также:  All active exe windows

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

Состав: текст , который интерпретируется командным процессором. Строки этого текста могут представлять собой:

  • внешние или внутренние команды ОС;
  • обращения к исполняемым программам *.COM или *.EXE, и вызовы других командных файлов;
  • команды для управления выдачей на экран, а также для организации ветвлений и циклов;
  • метки, на которые совершается переход при выполнении заданного в файле условия.

Каждая команда находится на отдельной строке.

2. Команды пакетной обработки.

а) REM комментарий в тексте файла. Обычно используют, чтобы временно убрать из текста какую-либо команду. Формат: REM [любая строка]

б) ECHO вывод на экран сообщений. Формат: ECHO [ON или OFF или Сообщение]

Параметры ON и OFF включают и выключают выдачу на экран системных сообщений («эха»). Команда ECHO OFF используется, чтобы не «засорять» экран при исполнении BAT-файла. Произвольная строка после ECHO понимается как сообщение и без изменений выводится на экран. Пустая строка обозначается одной точкой. Примеры :

echo. Перейти к следующей строке;

echo Программа не найдена! Выдает на экран сообщение «Программа не найдена!».

в) @. Может быть только первым символом строки и подавляет ее выдачу на экран. Используется только в пакетном режиме. Пример:

@echo off Выключаем «эхо»; из-за символа @ сама команда echo off тоже не выводится на экран; этой строкой обычно начинаются командные файлы.

г) PAUSE приостанавливает вывод на экран, выводит сообщение «Нажмите любую клавишу. » и ждет нажатия любой клавиши. Параметров не имеет.

д) IF позволяет проверять условие и выполнять ветвление в зависимости от результата проверки.

Общий вид команды : IF [NOT] [условие] [действие], где «действие» — любая команда, выполняемая, если истинно условие. Условие записывается в одной из трех форм, поэтому команда IF имеет три формата.

Формат 1 . Проверка кода завершения последней перед оператором IF команды. Используется конструкция следующего вида: IF ERRORLEVEL число

Любая программа может выработать в момент своего окончания собственный код завершения, который доступен другим программам через переменную с именем ERRORLEVEL. Большинство команд и программ при нормальном завершении устанавливают errorlevel=0. Задав условие if errorlevel 1, Вы определите, что оно будет выполнено, если программа вырабатывает код завершения больший, либо равный 1.

Формат 2 . Проверка наличия файла в каталоге. Оператор IF имеет вид: IF EXIST имя файла

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

Формат 3 . Сравнение двух строк. Оператор имеет вид: IF [строка_1]==[строка_2]

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

Любое из этих трех условий может задаваться со знаком логического отрицания NOT. При этом истинность условия трактуется в обратном смысле. Примеры :

if exist c:\autoexec.bat type c:\autoexec.bat

если в головном каталоге диска c: есть файл autoexec.bat, вывести его на экран;

if not exist c:\WORK\*.* echo Нет файлов!

если в каталоге WORK нет ни одного файла, вывести соответствующее сообщение;

if errorlevel 1 echo Форматирование прошло не безупречно!

если программа format установила errorlevel больше нуля,сообщить об ошибке;

если переменная с именем A равна строке ‘Yes’, очистить экран.

Аналогично команда IF может использоваться из командной строки.

е) GOTO позволяет передавать управление на заданную метку Формат команды: GOTO метка

Метка начинается со знака : Пример :

if %A%==Yes goto Clear

Если переменная A совпадает со строкой Yes, перейти на метку Clear и очистить экран. В противном случае пропустить очистку экрана.

ж) CALL осуществляет вызов одного командного файла из другого с последующим возвратом в вызывающий файл. Формат команды: CALL [имя файла]

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

Вызывающий командный файл: (example.bat)

echo Файл запущен!

Вызываемый командный файл: (version.bat)

echo Ваша версия операционной системы:

example.bat вызывает version.bat, после выполнения которого вновь получает управление.

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

1) переменная, определяемая в цикле. Ее имя состоит символа процента (в старых версиях DOS/Windows — двух символов) и последующих букв, например, %A. Набор значений, которые последовательно принимает такая переменная, задается при ее определении в команде for (см. ниже).

2) переменная окружения. Она определяется внутренней командой DOS вида

где имя и значение — произвольные строки, и в течение всего сеанса работы хранится в специальной области памяти, называемой «системным окружением». Системное окружение управляется командным интерпретатором command.com. Чтобы использовать переменную окружения в командном файле нужно ее имя заключить в символы процента %, например , командами

переменной с именем weekday присваивают значение sunday и выводят ее значение на экран командой ECHO. Для удаления переменной из окружения используют строку вида set имя=

Читайте также:  Как выполнить команду от имени администратора windows 10

Для просмотра окружения можно использовать команду SET без параметров.

В DOS и Windows, как правило, используются следующие стандартные переменные окружения:

  • winbootdir Главный каталог ОС Windows (в версиях NT/2000 может называться SystemRoot)
  • COMSPEC Полное имя текущего командного процессора
  • PROMPT Вид строки приглашения диалогового режима
  • TEMP Каталог для временных файлов (иcпользуется также TMP)
  • PATH Список путей, по которым ищутся исполняемые программы, если путь не указан при запуске программы. По умолчанию программа ищется сначала в текущей папке, затем в папках, перечисленных в PATH. Пути разделяются символом ;

и) FOR обеспечивает циклическое выполнение команд. Формат: FOR переменная IN (набор) DO действие

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

For %a in (*.txt) do copy %a con

Переменной %%a последовательно присваиваются имена файлов с расширением txt из текущего каталога и каждый файл выводится на экран.

for %r in (*.*) do if exist a:\%r echo %r есть на диске a:

Команда перебирает файлы текущей директории и выясняет, есть ли на диске a: файл с таким же именем. Если такой файл существует, печатается сообщение. Вместо переменной %%r в команде ECHO каждый раз подставляется очередное имя файла.

for %z in (0,1,2,3,4,5,6,7,8,9) do if %z==%test% echo z=test=%z

Если переменная %z, принимающая значения цифр от 0 до 9, совпадает с переменной окружения test, печатается сообщение.

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

FOR %A IN (*.txt) DO TYPE %A

Все найденные в текущей директории файлы с расширением TXT последовательно выводятся на экран.

к) Параметры командного файла. При запуске из командной строки командному файлу могут быть переданы параметры. Они разделяются пробелами и количество их не может превышать девяти. Изнутри пакетного файла параметры доступны через строки вида %0, %1, . %9, где %0 — имя самого командного файла, %1 — имя первого параметра и так далее. Например, мы запускаем командный файл MOVA.BAT командой mova.bat *.tmp *.txt *.doc

После запуска параметр %0 равен строке «mova.bat», параметр %1 — строке «*.tmp» и т. д. Наш командный файл должен перемещать файлы, подходящие под переданные ему маски, на диск a:. Для первого параметра это легко сделать двумя командами: copy %1 a:\%1 и del %1. Первая копирует файлы на диск a:, вторая уничтожает источник копирования. Для второго параметра мы могли бы повторить те же команды, подставив в них %2 вместо %1. Но программа сразу же становится нерациональной, тем более, что число параметров заранее неизвестно. Помочь нам может команда SHIFT, которая сдвигает параметры командного файла на один влево. После применения SHIFT параметру %0 присваивается старое значение %1, в нашем случае это строка «*.tmp», а параметр %1 принимает значение «*.txt». Теперь этими же двумя командами мы можем обработать любое число параметров. Позаботившись об условии выхода из программы, получаем ее окончательный текст:

if not [%1]==[] goto LOOP

Благодаря команде SHIFT мы каждый раз обращаемся лишь к первому из переданных параметров и правильность работы не зависит от числа переданных параметров. Если очередная строка с маской не пуста, оператор goto LOOP передает управление к началу программы.

л) Дополнительные средства для написания командных файлов.

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

В состав большинства версий DOS/Windows включена внешняя команда choice, служащая для выбора действия. Формат команды:

CHOICE [/C:клавиши] [/N] [/T:выбор,время] [сообщение]

Здесь сообщение — любая строка текста, клавиши — список буквенных обозначений клавиш, допустимых для выбора. По умолчанию прописные и строчные буквы не различаются, а если список клавиш не указан, принимается /C:YN. Параметр /N запрещает вывод после сообщения списка клавиш и знака вопроса, а после параметра /T могут быть указаны выбор, принимаемый при отсутствии ввода с клавиатуры и время в секундах, через которое он будет сделан.

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

choice /c:01 /n /t:0,5 Продолжить?(1-да,0-нет)

значение ERRORLEVEL будет установлено в 1 при нажатии клавиши 0 или отсутствии ввода с клавиатуры в течении 5 секунд, а при нажатии клавиши 1 программа установит значение ERRORLEVEL, равное 2.

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