Консоль в Windows или немного о BAT и командной строке
Привет, друзья.
Кому посчастливилось родиться в 80-ых годах (или раньше) и сравнительно рано заиметь компьютер, прекрасно знают про DOS. Пусть в нём и были удобные файл-менеджеры, вроде Norton Commander, или горячо мною любимый DOS Navigator (пиратский, конечно), консолью пользоваться приходилось. Кто не знает, это такой чёрный экран с текстом. Всё управление осуществлялось посредством ввода специальных команд. Сейчас в Windows для всего существуют привычные окошки. Но командную строку выпиливать не стали.
Любители Линукса с консолью тоже знакомы. Остальные могут задаться вопросом: нафига она нужна? Так и есть, не нужна, если возникают подобные вопросы. Пост для тех, кто хочет. Рассмотрим несколько примочек стандартного cmd.exe, вызываемого при запуске bat-файла.
*.bat — пакетный файл, содержит последовательность команд. Выполняется с помощью интерпретатора командной строки — exe сейчас или command.com во времена DOS.
Кто-то может сказать, что bat-файлы не нужны, если есть консоль. Всё так, но «батнички» создаются для удобства. Допустим, есть группа картинок в какой-то папке, которые надо прогнать через оптимизатор. Если картинки постоянно новые, например, перед публикацией очередной статьи на блоге, удобнее подготовиться один раз, после чего скинуть файлы в папку, запустить bat-файл и загружать готовые картинки.
Рассмотрим группу полезных и не очень команд, которые могут использоваться при работе.
Команда pause
Просто выводит сообщение о необходимости нажать любую клавишу для продолжения и ожидает нажатие клавиши. Команда очень полезна, когда требуется что-то выполнить и не закрывать консоль после этого. Иначе говоря, можно видеть результат работы команд.
echo Hello! pause
Команда @echo off
Многие батники начинаются с этой строки. Проиллюстрировать, что делает программа, проще всего на таком батнике:
@echo off echo Hello pause
Если первой строки нет, будет тот вариант, что слева. При наличии этой строки — вариант справа. Получается, @echo off препятствует выводу исполняемой команды. Результаты работы в консоли отображаются.
Команда cls
Всё, что делается — очищается консоль.
echo Hello! pause
Разделитель команд
Для выполнения сразу нескольких команд можно использовать & — символ амперсанда.
color 2 & cls & pause
Меняет цвет шрифта на зелёный, очищает экран и выводит надпись о необходимости нажатия клавиши для продолжения работы.
Переключить диск на другой
Просто пишем букву диска и ставим двоеточие:
d:
Текущий диск меняется на D.
Вывод текущего каталога, смена каталога
Команда cd без параметров выводит полный путь к тому месту, где мы находимся. Для смены нужно добавить параметр с путём:
cd c:\windows
Меняет путь на системную директорию Windows. Важно! Команда работает только в путями диска, на котором находимся в данный момент. Если нужно использовать файл с другого диска, для начала переключитесь на него (см. предыдущую команду).
Вывод в файл
Есть и такая возможность. Используйте символ > с указанием имени файла, в который надо скопировать результат работы команды.
dir > 1.txt
В файл 1.txt будет записан листинг (вывод) команды dir, которая выводит список всех папок и файлов в текущем каталоге.
Установка переменных
Для этого нужно использовать команду set, а в качестве параметра указать имя переменной и сразу, без пробелов, знак равно и значение. Для доступа к установленной переменной в программе используется её имя, обрамлённое знаками процента. Пример:
@echo off set a=Hello, World! echo %a% pause
Как назначить переменной текущий путь
Путь к текущему каталогу содержится в особой переменной %~dp0.
@echo off set current_path=%~dp0 echo %current_path% pause
SetLocal и параметры
В начало bat-файла обычно добавляются параметры для изменения значения переменных среды выполнения.
- EnableExtensions — включение расширенной обработки команд. В частности, нужно для обработки флага /r.
- EnableDelayedExpansion — для корректного изменения переменных. Установленные переменные далее, в циклах, не меняются. Этот флаг позволяет изменить поведение, но для доступа к переменным нужно использовать не знаки процента %var%, а восклицательные знаки !var!.
SetLocal EnableExtensions EnableDelayedExpansion
Получение определённых файлов из каталога и его подкаталогов
Выше упоминалась команда
for /R . %%a IN (*.png) DO echo %%a
Команда ищет не только в указанном месте (в данном случае — символ точки — текущая директория), а так же во всех вложенных поддиректориях, файлы с расширением *. png, после чего выводит их на экран. Обратите внимание на синтаксис, знаки процента указывают перед переменной.
Замена части строки на другую
Очень интересный синтаксис. В момент использования переменной, нужно сразу после её имени поставить двоеточие, указать ЧтоМеняем, знак равно и НаЧтоМеняем. Чтобы было ясно, пусть определена переменная a. Тогда, для замены юзается такая конструкция %a:ЧтоМеняем=НаЧтоМеняем%. Пример:
@echo off set a=Hello, world echo %a:Hello=Aloha% pause
Выведет на экран надпись Aloha, world.
Вывод путей файлов относительно текущего каталога
Для этого потребуются фишки, используемые выше.
@echo off SetLocal EnableExtensions EnableDelayedExpansion for /R . %%a IN (*.png) DO ( set fn=%%a echo !fn:%~dp0=! ) pause
Вторая строка здесь обязательна. Без установки флага EnableDelayedExpansion переменная fn не раскроется. При отсутствии EnableExtensions работать будет, но это не точно — некоторые пользователи могут переопределить соответствующую настройку в реестре, и программа будет ругаться на флаг /R. Поэтому просто указываем оба параметра, на случай юзеров с непредвиденным поведением рук.
Пожалуй, на сегодня достаточно. Для более детальной справки по указанным программа пользуйте стандартный параметр /? например так:
for /?
В следующий раз, основываясь на полученном сегодня опыте, сделаем какую-нибудь годноту. Если нашли для себя что-то полезное, не поленитесь жмакнуть кнопочку ниже ↓ и рассказать друзьям. Может, они тоже найдут для себя что-то.
Автор публикации
2 070не в сети 4 недели
x64 (aka andi)
Комментарии: 2893Публикации: 405Регистрация: 02-04-2009 Загрузка…Команда FOR задает запуск некоторой команды для каждого файла из заданного множества. Информация для данной статьи взята с сайта Microsoft. Работу команды for можно охарактеризовать так: c) выполнить команду (иногда в команде участвует %%G, например, в качестве параметра) d) выполнить шаги a), b), c), пока не будет достигнуто конечное значение из диапазона значений переменной цикла. Очень хорошо команда for описана в справке w2k. Синтаксис for {%переменная | %%переменная} in (множество) do команда [ПараметрыКоманднойСтроки] <>Параметры {%переменная | %%переменная} Обязательный параметр. Замещаемый параметр. Используйте %переменная для выполнения команды for из командной строки. Используйте %%переменная для выполнения команды for в пакетном файле. (множество) Обязательный параметр. Задает один или несколько файлов, каталогов, диапазон значений или текстоваых строк, подлежащих обработке заданной командой. Скобки являются обязательными. команда Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога, диапазона значений или текстовой строки, включенной в указанный параметр (множество). ПараметрыКоманднойСтроки Задает параметры командной строки, которые используются с указанной командой. /? Отображение справки в командной строке. Заметки
[Примеры] В пакетных файлах используется следующий синтаксис для команды for: Чтобы отобразить содержимое всех файлов, имеющих разрешение DOC или TXT, в текущем каталоге с помощью заменяемой переменной %f, введите следующую команду: В предыдущем примере каждый файл с расширением .doc или .txt в текущем каталоге будет подставляться вместо переменной %f, пока не будет выведено содержимое всех файлов. Для использования этой команды в пакетном файле нужно заменить каждую команду %f на %%а. В противном случае переменная игнорируется и выводится сообщение об ошибке. Чтобы произвести разбор файла, игнорируя комментарии, можно использовать следующую команду: Данная команда производит разбор каждой строки в файле Myfile. Переменная %i объявлена явно в инструкции FOR. Переменные %j и %k объявлены явно при использовании tokens=. С помощью tokens= можно указать до 26 элементов, если это не вызовет попытки объявить переменную с именем, большим буквы «z» или «Z». Для разбора вывода команды с помощью помещения параметра МножествоИменФайлов в скобки можно использовать следующую команду (пример выводит список имен всех переменных окружения): Ищем в директориях файлы с расширением html содержащие строку google: FOR /L Внутри командного файла в качестве параметра используйте %%G, а в командной строке %G (такие уж Микрософт придумал правила). (20,-5,10) будет генерить последовательность 20 15 10, а (1,1,5) последовательность 1 2 3 4 5. Пример Можно использовать нечисловой список, например: [Другие команды for] FOR — цикл по всем файлам в одной директории (исключая её подкаталоги) syntax-FOR-Files [Связанные с for команды] FORFILES (w2003 Server) — выборка списка файлов из директории для отображения или использования при обработке в bat-файле [Equivalent Linux BASH commands] for — Expand words, and execute commands [Условные обозначения форматирования]
[Ссылки] 1. Практические приемы программирования в bat-файлах. |
Как создать BAT файл в Windows 7
Каждый день пользователь выполняет за компьютером огромное количество различных операций с файлами, службами и программами. Некоторым приходится выполнять однотипные простые действия, которые вручную занимают значительное количество времени. Но не стоит забывать, что перед нами стоит мощная вычислительная машина, которая при правильной команде в состоянии выполнить все сама.
Самым примитивным способом автоматизации любого действия является создание файла с расширением .BAT, в простонародье именуемого как «батник». Это очень простенький исполняемый файл, который при запуске выполняет заранее заданные действия, после чего закрывается, ожидая следующего запуска (если он многоразовый). Пользователь с помощью специальных команд задает последовательность и количество операций, которые «батник» должен выполнить после запуска.
Как создать «батник» в операционной системе Windows 7
Сделать этот файлик может любой пользователь на компьютере, который имеет достаточно прав для создания и сохранения файлов. На счет выполнения немного сложнее — выполнение «батника» должно быть разрешено как и отдельно взятому пользователю, так и операционной системе в целом (запрет иногда накладывается в целях безопасности, ведь исполняемые файлы не всегда создаются для благих дел).
Будьте внимательны! Никогда не запускайте на компьютере файлы с расширением .BAT, скачанные из неизвестного или подозрительного ресурса, а также не используйте при создании такого файла код, в котором вы не уверены. Исполняемые файлы такого типа умеют шифровать, переименовывать или удалять файлы, а также форматировать целые разделы.
Способ 1: использование расширенного текстового редактора Notepad++
Программа Notepad++ является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.
- Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись «Создать», в выпавшем сбоку окошке щелчком левой кнопки мыши выберите «Текстовый документ»
- На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник.
После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт «Edit with Notepad++». Созданный нами файл откроется в расширенном редакторе.
- Очень важна роль кодировки, в которой будет исполнена команда. По умолчанию используется кодировка ANSI, которую нужно заменить на OEM 866. В шапке программы нажимаем на кнопку «Кодировки», нажимаем на аналогичную кнопку в выпавшем меню, затем выбираем пункт «Кириллица» и нажимаем на «OEM 866». Как подтверждение смены кодировки справа внизу в окне появится соответствующая запись.
- Тот код, который вы уже нашли в интернете или написали сами для выполнения определенной задачи, необходимо просто скопировать и вставить в сам документ. На примере ниже будет использована элементарная команда:
shutdown.exe -r -t 00
После запуска этот батник перезагрузит компьютер. Сама команда означает запуск перезагрузки, а цифры 00 — задержку ее выполнения в секундах (в данном случае она отсутствует, то есть перезапуск выполнится незамедлительно).
- Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт «Файл», затем нажмите на «Сохранить как».
- Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт «Batch file».
К уже заданному ранее слову или фразе без пробела допишется «.BAT», и получится так, как на скриншоте ниже.
- После нажатия на кнопку «OK» в предыдущем окне, на рабочем столе появится новый файл, который будет выглядеть как белый прямоугольник с двумя шестеренками.
Способ 2: использование стандартного текстового редактора Блокнот
Он обладает элементарными настройками, которых вполне хватает для создания самых простых «батников». Инструкция абсолютно аналогична предыдущему способу, программы лишь немного отличаются в интерфейсе.
- На рабочем столе двойным щелчком откройте ранее созданный текстовый документ — от откроется в стандартном редакторе.
- Команду, которую использовали ранее, скопируйте и вставьте в пустое поле редактора.
- В окошке редактора слева вверху нажмите на кнопку «Файл» — «Сохранить как…». Откроется окно Проводника, в котором необходимо указать место сохранения конечно файла. Здесь отсутствует способ задания необходимого расширения с помощью пункта в выпадающем меню, поэтому просто нужно дописать к названию «.BAT» без кавычек, чтобы получилось так, как на скриншоте ниже.
Оба редактора отлично справляются с созданием батников. Стандартный блокнот больше подходит для простых кодов, в которых используются несложные одноуровневые команды. Для более серьезной автоматизации процессов на компьютере необходимы продвинутые батники, которые с легкостью создаются расширенным редактором Notepad++.
Рекомендуется запускать файл .BAT от имени администратора, чтобы не возникало проблем с уровнями доступа к определенным операциям или документам. Количество задаваемых параметров зависит от сложности и назначения задачи, которую необходимо автоматизировать.
Мы рады, что смогли помочь Вам в решении проблемы.Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ Набор| Документы Microsoft
- 4 минуты на чтение
В этой статье
Отображает, устанавливает или удаляет переменные среды cmd.exe. Если используется без параметров, set отображает текущие настройки переменных среды.
Примечание
Для этой команды требуются расширения команд, которые по умолчанию включены.
Команда set также может запускаться из консоли восстановления Windows с использованием других параметров. Дополнительные сведения см. В разделе Среда восстановления Windows (WinRE).
Синтаксис
установить [ = []]
установить [/ p] = []
set / a <переменная> = <выражение>
Параметры
Параметр | Описание | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
<переменная> | Задает переменную среды, которую нужно установить или изменить. | ||||||||||||||||||||
<строка> | Задает строку для связи с указанной переменной среды. | ||||||||||||||||||||
/ п | Устанавливает значение <переменная> для строки ввода, введенной пользователем. | ||||||||||||||||||||
<строка подсказки> | Задает сообщение, предлагающее пользователю ввести данные.![]() (например, «StringConpting & Symbol» ).Если вы используете кавычки, чтобы заключить строку, содержащую один из специальных символов, кавычки устанавливаются как часть значения переменной среды.Используйте переменные среды для управления поведением некоторых командных файлов и программ, а также для управления способом отображения и работы Windows и подсистемы MS-DOS. Команда set часто используется в файле Autoexec.nt для установки переменных среды. Если вы используете команду set без каких-либо параметров, отображаются текущие настройки среды.Эти параметры обычно включают переменные среды COMSPEC и PATH , которые используются для поиска программ на диске. Две другие переменные среды, используемые Windows, — это PROMPT и DIRCMD . Если вы указываете значения для Если вы укажете только переменную и знак равенства (без При использовании параметра / a поддерживаются следующие операторы в порядке убывания приоритета:
Если вы используете логические ( Если запустить set / a из командной строки вне командного сценария, отобразится окончательное значение выражения. Числовые значения являются десятичными числами, если перед ними не стоит префикс 0 × для шестнадцатеричных чисел или 0 для восьмеричных чисел. Следовательно, 0 × 12 — это то же самое, что 18, то есть 022. Поддержка отложенного расширения переменных среды отключена по умолчанию, но вы можете включить или отключить ее с помощью команды cmd / v . При создании командных файлов вы можете использовать set для создания переменных, а затем использовать их так же, как вы использовали бы нумерованные переменные от % 0 до % 9 . Команда set присваивает все, что следует за знаком равенства (=), значению переменной.& 1 Чтобы установить переменную среды с именем INCLUDE таким образом, чтобы с ней была связана строка c: \ directory , введите: Затем вы можете использовать строку c: \ directory в пакетных файлах, заключив имя INCLUDE со знаками процента (% ). Например, вы можете использовать Чтобы использовать команду set в пакетной программе для добавления нового каталога в переменную среды PATH , введите: Чтобы отобразить список всех переменных среды, начинающихся с буквы P , введите: Дополнительные ссылки4.3.2 Команды пакетного файлаподобно Макросы, которые обсуждались в 4.2.2 Лабораторная работа: Макросы , пакетные файлы автоматизируют задачи. В этом разделе дается обзор партии files и охватывает некоторые команды, которые можно использовать в пакетных файлах. Пакетные файлы В
срок партия
файл изначально
имелось ввиду неинтерактивный .
В ранних компьютерных системах пользователи отправляли программы на
перфокарты, которые собираются пачками и запускаются.В
затем вывод был распечатан и возвращен пользователям. Как действующий
системы развивались дальше, пакетная обработка стала включать
функция планирования, при которой система выбирает, какое задание запускать
далее в зависимости от уровня приоритета и необходимых ресурсов. А командный файл в Windows или «сценарий оболочки» в UNIX, выполняет аналогичную функцию. Он состоит из последовательности команд для запускать программы и манипулировать файлами. Можно построить полностью автономные командные файлы, которые не требуют взаимодействия с пользователем запустить, но это не обязательно. Командная строка DOS процессор, выполняющий командные файлы, действительно обеспечивает некоторые простые формы взаимодействия с пользователем, как вы увидите. А
командный файл под Windows представляет собой обычный текстовый файл (не файл Word) с
расширение .BAT .
Пакетный файл содержит команды DOS и имена программ для выполнения. А Обычно командные файлы используются для написания новых команд. Например здесь это командный файл SWAP.BAT , который меняет местами два файла, переименовывая их: REM Вот источник SWAP file1 file2 @ECHO ВЫКЛ. REM Помните, что / предшествует переключателю.REM Используйте HELP DEL или DEL /? чтобы узнать о / Q DEL / Q ТЕМП. ПЕРЕЕХАТЬ % 1 ТЕМП. ПЕРЕЕХАТЬ % 2% 1 ПЕРЕЕХАТЬ ТЕМП.% 2 В
обозначение% 1,% 2 и т. д. относится к аргументам команды swap .
Если пользователь вводит «SWAP»
A.TXT B.DOC »
в командную строку, то SWAP ссылается
к новой команде, определенной нашим пакетным файлом, а пакетный файл
выполняется, % 1 —
эквивалент A.TXT,
а % 2 — это
эквивалент B.DOC .
Также можно ввести именованные переменные в пакетный файл,
например % NAME% ,
с помощью операторов присваивания. Создание пакетный файл на самом деле представляет собой тип программирования с использованием «языка» это очень ограничено. Одна необычная особенность этого языка заключается в том, что синтаксическая ошибка в одной строке не останавливает выполнение файла. Если обнаружена синтаксическая ошибка, отображается сообщение об ошибке и командный файл переходит к следующей команде. Это могло иметь непреднамеренные последствия. Как и в случае с другими типами программ, это важно тщательно протестировать командный файл, прежде чем использовать его в любом критическое приложение. КомандыВ Ниже приведен список функций командной строки, обычно используемых в пакетном режиме. файлы: rem примечание Этот обозначает все, что следует за командой rem на линии ( примечание в наш пример) в качестве комментария. эхо сообщение Этот
команда отображает сообщение для
Стандартный вывод. Команда echo также может использоваться с перенаправлением вывода для отправки сообщения в файл. эхо. Уведомление период (. ) в конце команды echo . Это специальный вариант команды echo , который отображает пустую строку для стандартного вывода. @echo от Этот останавливает отображение команд в пакетном файле в стандартном Вывод. По умолчанию каждая строка текста в пакетном файле встречается командным процессором отображается в стандартный вывод.Пока это режим по умолчанию полезен для целей отладки, в результате отображается часто сбивает пользователей с толку, поэтому большинство команд, написанных как командные файлы, начинаются с @ эхо выкл . пауза Этот
команда прерывает выполнение командного файла и отображает
сообщение «Нажмите любую клавишу, чтобы продолжить ….» Выполнение возобновляется
когда нажата одна клавиша клавиатуры. Эта команда полезна, если вы
хотите остановить пакетный файл и дождаться, пока пользователь выполнит некоторые
действие (например, вставка дискеты) перед продолжением
выполнение. : этикетка Любые строка в командном файле, которая начинается с двоеточия (: ) считается этикеткой. Ярлыки используются определенным контролем потока команды для повторения или пропуска определенных строк в файле. После двоеточие (: ), укажите подходящее имя в качестве имени метки. Имя не должно содержат любые вложенные пробелы. перейти метка Этот команда заставляет командный процессор выполнить первую команду строка после метки, на которую ссылается команда. если
существует имя_файла команда Этот
команда оценивает текущий рабочий каталог для файла или
подкаталог. В приведенном выше примере, если утверждение верно (что
есть, если существует файл с именем filename ),
затем команда ( команда в
наш пример) выполняется. Следовательно, команда, которая читает , если
существует index.html del index.html определяет
если существует файл с именем index.html и, если это так, удаляет его. В lab в следующем разделе дает примеры использования этих команд в контекст командного файла. Пользовательские команды — Пакетный сценарий (.BAT)Эта команда сгенерирует пакетный сценарий (.bat) и запустит его. Пакетные сценарии основаны на системе исполняемых сценариев в Windows, которая восходит к старым временам DOS. Он все еще используется и весьма полезен, особенно если вы хотите запускать множество внешних программ одну за другой. Кроме того, вы можете отправить вывод одной программы для использования в качестве ввода другой. При запуске команды пакетного сценария из этой команды создается файл .bat; затем сценарий запускается с его рабочей папкой, установленной на текущий исходный путь. МультиТэги MultiTags — это текст в специальном формате, который будет заменен динамической информацией. Например, MultiTag $ {focusfilepath} будет заменен на полный путь к файлу, который в данный момент находится в фокусе. Пути по умолчанию не цитируются, поэтому, если вам нужны кавычки вокруг пути, вы должны поместить их вокруг MultiTag, например «$ {focuspath}» . Подробнее о MultiTags ОпцииКогда вы нажимаете кнопку Option, вы получаете список параметров, которые вы можете назначить команде. (Этот список параметров для пакетного сценария еще не окончательно доработан) Командные аргументыДиалог поддерживает аргументы для отправки команде.Они отправляются ему, если команда вызывается из панели командной строки, или если файлы перетаскиваются на кнопку, и в команде включен параметр «Использовать удаленные файлы в качестве параметра», или если эта команда вызывается из пользовательской команды или мультискрипта. команда. Доступ к параметрам осуществляется с помощью MultiTags $ {param: |