System chcp 1251 nul

Команда CHCP используется для просмотра или изменения текущей кодовой страницы в окне командной строки Windows. Кодовая страница (Code Page или сокращенно CP) определяет соответствие между двоичным кодом и соответствующим ему символом, отображаемом на экране. Для кодирования текстов на русском языке (то есть букв кириллицы) наиболее широко применяются следующие кодовые страницы:

— Windows-1251, она же Microsoft code page 1251 (CP1251) в операционных системах семейства Windows;

— Кодовая страница CP866, она же IBM code page 866 — в операционных системах семейства DOS, а также в приложениях командной строки Microsoft Windows;

Стандартно, в приложениях командной строки, используется кодовая страница 866 , что соответствует DOS-кодировке. Окно приложения CMD.EXE запускается с установленной кодовой страницей 866 . Изменение кодовой страницы действует только по отношению к текущему сеансу CMD.

Примеры использования команды CHCP:

chcp — отобразить текущую кодовую страницу.

chcp 1251 — установить кодовую страницу, соответствующую Windows-кодировке.

chcp 866 — установить кодовую страницу, соответствующую DOS-кодировке.

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

В данной статье пойдёт речь о кодировках в Windows. Все в жизни хоть раз использовали и писали консольные приложения как таковые. Нету разницы для какой причины. Будь-то выбивание процесса или же просто написать «Привет. Я не могу сделать кодировку нормальной, поэтому я смотрю эту статью!».

Тем, кто ещё не понимает, о чём проблема, то вот Вам:

System chcp 1251 nul

А тут было написано:

Но никто ничего не понял.

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

1. Настройка консоли в батнике

Сразу для тех, кто пишет chcp 1251 лучше написать это:

Первый способ устранения проблемы, это Notepad++. Для этого Вам нужно открыть Ваш батник таким способом:

System chcp 1251 nul

Не бойтесь, у Вас откроется код Вашего батника, а затем Вам нужно будет сделать следующие действия:

System chcp 1251 nul

Если Вам ничего не помогло, то преобразуйте в UTF-8 без BOM.

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

Первый способ непосредственно Notepad++, но а если нужно сначала одну кодировку, а потом другую?

Сразу для использующих chcp 1251 пишите это:

Второй способ это написать десктопную программу, или же использовать Visual Studio. Если же не помогает, то есть первое: изменение кодировки вывода(Пример на C++).

Если же не сработает:

3. Изменение chcp 1251
Если же у Вас батник, то напишите в начало:

Теперь у Нас будет нормальный вывод в консоль. На других языках (С++):

4. Сделать жизнь мёдом
При использовании данного способа Вы не сможете:

  • Разрабатывать приложения на Windows ниже 10
  • Спасти мир от данной проблемы
  • Думать о других людях
  • Разрабатывать десктопные приложения, так как Вам жизнь покажется мёдом
  • Сменить Windows на версию ниже 10
  • Ну и понимать людей, у которых Windows ниже 10

Установить Windows 10. Там кодировка консоли специально подходит для языка страны, и Вам больше не нужно будет беспокоиться об этой проблеме. Но у Вас появится ещё 6 проблем, и вернуться к предыдущей лицензионной версии Windows Вы не сможете.

Здравствуйте.
В консольных программах не выводятся русские символы.
Думаю, виновата сама консоль — различная кодировка в консоли (CP-866) и Dev-е (CP-1251).
В нормальных текстовых редакторах всегда менял кодировку в настройках, тут не нашел.

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

Короче, может нужно менять кодировку в консоли, либо в Dev-e. Как это сделать?
Благодарю за советы.

> Ну и если используешь printf, то юзай так:
printf(“%lc
“, 0x0450);

Пока только cout ))

Спасибо, разобрался. Вообщем не один вариант не работал, пока использовался точечный шрифт.
Поменял, все прекрасно заработало, но, если запускать проект из Dev-a (в нем тоже поменял) , все равно гад чушь выносит ))

Впрочем, лучше из консоли, так правильнее.
Спасибо Вам за помощь)

using namespace std;

int main() <
setlocale(LC_ALL, “”);
cout
#include

using namespace std;

int main() <
system(“chcp 1251 > nul”);
cout
#include

using namespace std;

int main() <
locale::global(locale(“”));
cout Остальные ответы

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

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

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

Создать новый пакетный файл можно в текстовом редакторе, например в «Блокноте». Главное сохранить его с расширением .bat или .cmd. Команды используются точно те же, что и в командной строке Windows. Каждая новая команда пишется с новой строки. Имеется возможность использовать переменные, условия и переходы к определенному месту в командном файле для создания сложных сценариев.

MD %SYSTEMDRIVE%\%date%
reg export "HKEY_CURRENT_USER\Software" "%SYSTEMDRIVE%\%date%\backup.reg" /y

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

Чтобы просмотреть содержимое или изменить командный файл необходимо щелкнуть по нему правой кнопкой мыши и выбрать пункт «Изменить». Он откроется в текстовом редакторе, где в него можно внести требуемые изменения.

Кириллица в BAT файле

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

Мы уже затрагивали кодировки, когда рассматривали единицы измерения объема информации. Суть проблемы заключается в том, что в командная строка использует кодировку DOS (codepage 866), а в самой операционной системе используется кодировка Windows (codepage 1251). Поэтому, когда вы запускаете такой батник, консоль не может правильно понять русские буквы и выдает ошибку. Это все равно, что если вы бы получили письмо на китайском языке. Это касается не только русского языка, но и любого другого, где используются не латинские символы.

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

Она приказывает командному интерпретатору заменить кодовую страницу на стандартную для Windows. Теперь консоль нормально понимает русские буквы в именах папок и файлов, но при этом весь текст, выводимый в окне командной строки все равно отображается крякозябрами. При большом желании это можно обойти различными трюками, но все это «костыли». Есть другой простой способ обеспечить поддержку кириллицы в пакетном файле без танцев с бубнами.

:/>  Объединить два hdd в один

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

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

В качестве примера рассмотрим сохранение файла в кодировке DOS с помощью Notepad++. Переходите в меню программы по пути «Кодировки» ⇒ «Кодировки» ⇒ «Кириллица» ⇒ «OEM 866», как на изображении ниже.

Кодовые страницы в Notepad++

Теперь кодовая страница документа изменится на OEM 866, что отразится в правом нижнем углу окна. Теперь достаточно сохранить ваш BAT файл и все русские буквы будут обрабатываться нормально. Только нужно иметь в виду, что если вы изменяете кодировку уже существующего документа, то вся кириллица в нем испортится. Поэтому создайте сначала новый документ с кодировкой DOS, а затем уже вставьте в него свой код из старого батника или можно скопировать все в буфер обмена, поменять кодировку и вставить обратно.

Что делать, если альтернативного редактора нет, и вы по каким-то причинам не хотите или не можете его установить. Можно вспомнить, что во всех Windows помимо стандартного Блокнота присутствует еще WordPad, который тоже может сохранять в кодировке DOS. Запустить его можно нажав комбинацию клавиш WIN+R и ввести «WordPad» и кнопку OK или «Пуск» ⇒ «Стандартные» ⇒ «WordPad». Просто набираете ваш код и нажимаете «Сохранить», в поле «Тип файла» выбрав «Текстовый документ MS-DOS». Затем меняете расширение получившего файла с .txt на .bat.

Выбор типа документа в WordPad

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

Студворк — интернет-сервис помощи студентам

Написав в блокноте Windows (Notepad.exe) батник 1.bat такого содержания

Echo off
Echo Введите текст. Завершение ввода - комбинация Ctrl+Z ENTER
copy con temp.txt

мы получим “абракадабру”:

System chcp 1251 nul

Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).

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

(3 способа):

1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS):

Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)

Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)

System chcp 1251 nul
System chcp 1251 nul

System chcp 1251 nul

в редакторе не должно быть видно “крякозябер”, иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума “портиться” в буфере. Выход:

когда копируете код, убедитесь, что включена русская раскладка клавиш.

2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.

А именно, в начале пакетного файла написать:

Это поможет Вам только частично.
Что можно?

Создаст папку “Моя папка” с нормальными символами.

Все равно выведет текст “абракодаброй”.
Кроме того, текст сообщений от команд консоли тоже станет нечитаемым.

Но русский текст все равно можно вывести таким трюком:

3 способ (для ленивых):
(или для тех, кто не может установить себе продвинутый редактор по религиозным или др. причинам System chcp 1251 nul)
Конвертируем Batch-файл правым кликом мыши ^_^

Пример для Windows 7:
1) Пуск -> в поисковой строке набрать Shell:SendTo
2) Откроется папка, в которую нужно скопировать RecodeToDOS.vbs из этого архива.

Использование:
Правый клик мыши по Batch-файлу -> Отправить -> RecodeToDOS
Файл будет заменен перекодированной версией.

Старый вариант: перекодировщик на языке Batch. Может некорректно работать со спецсимволами.

Здесь достаточно перетянуть Ваш файл на нижеуказанный файл-сценарий.
Ваш исходный файл будет заменён перекодированным вариантом.

Способ 3а. Ухищренный (для истинных кодеров).
Писать в блокноте кириллический текст в виде псевдосимволов (т.е. вручную перекодировать) ALT + код символа (на цифровой клавиатуре) System chcp 1251 nul

Он-лайн перекодировщик

Использовать стороннее ПО.

прошу вести в теме: Русский язык в командной строке
Обзор других редакторов: Кто какие программы использует для написания батников?

Общие сведения о командном процессоре Windows.

Использование переменных в командных файлах.

Передача параметров командному файлу.

Переходы и метки.

Примеры командных файлов:

    – Своя команда для создания новых файлов.

    – Присвоение съемному диску одной и той же буквы.

    – Создание архива, имя которого содержит дату и время.

    – Выполнение только в заданный интервал времени.

    – Пример создания архива каталога пользователя.

    – Изменение даты и времени для файлов и папок.

    – Запуск и остановка служб Windows в командной строке.

    – Выдача на экран значения ERRORLEVEL.

    – Диалог с пользователем.

    – Задержки в командных файлах.

    – Определение текущей версии Windows.

    – Поиск в локальной сети компьютеров с запущенным приложением.

    – Поиск компьютеров с запущенным приложением по списку на основе сетевого окружения.

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

    – Поиск в локальной сети включенных компьютеров.

    – Работа с дисками, файлами и каталогами.

    – Работа с графическими приложениями из командной строки.

    – Перекодировка текстовых файлов .

    – Часто встречающиеся ошибки при написании командных файлов.

Общие сведения о командном процессоре Windows.

   
Командные файлы (пакетные файлы, скрипты, сценарии, ”батники”) – это обычные текстовые файлы с расширением .bat или .cmd, строки которых представляют собой специальные команды командного процессора (интерпретатора команд ) и/или имена исполняемых файлов с параметрами. Командный процессор – это специальная программа, являющаяся обязательным элементом практически любой операционной системы, главным назначением которой, является предоставление пользователю возможности выполнения определенных программ без их компиляции и создания исполняемых файлов. Для операционных систем DOS и Windows9X в качестве интерпретатора команд использовался командный процессор command.com, для всех остальных ОС семейства Windows ( NT/2k/XP/Vista/7/8/10 и старше) – cmd.exe.

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

:/>  Как переименовать файл с помощью клавиатуры

Современная реализация командного процессора CMD кроме классического применения, позволяет также использовать возможности Инструментария управления Windows (WMI –Windows Management Instrumentation), сценарии Windows Script Host (WSH) и даже оболочки (shell) операционных систем Linux без установки стороннего программного обеспечения, поскольку в современных Windows, начиная с Windows 10, в качестве стандартного компонента системы может применяться Подсистема Windows для Linux (WSL – Windows Subsystem for Linux), что позволяет объединять в командных файлах исходные тексты CMD и, например, – bash.
   
Как уже упоминалось выше, командный файл – это обычный текстовый файл с набором команд, которые последовательно выполняются командным процессором CMD Windows (cmd.exe). Командный процессор последовательно считывает и выполняет команды, которые представляют собой своеобразную программу, реализующую определенный алгоритм. Естественно, как и в любой другой среде программирования, программирование в командной строке подчиняется определенным правилам и командные файлы должны им полностью соответствовать.

Команды CMD

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

– исполняемый файл ping.exe с параметром yandex.ru. Расширение .exe можно не указывать, и данная команда может быть записана так:

Список стандартных команд можно получить, введя команду:

Справочную информацию по конкретной команде можно получить, указав ее название в качестве параметра команды HELP:

HELP Имя команды

В русифицированной версии Windows необходимо учитывать, что в среде командного процессора символы национального алфавита отображаются в DOS-кодировке, в соответствии с кодовой страницей (code page) 866. При необходимости, для переключения между кодовыми страницами Windows и DOS используется команда

CHCP номер страницы
– использовать кодовую страницу 866 (DOS)
– использовать кодовую страницу 1251 (WINDOWS)

Внешний вид окна CMD.EXE (консоли Windows) можно изменить с помощью команды

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

– символы белого цвета на черном фоне (используется по умолчанию).

– черные символы на белом фоне.

– светло-желтые символы на черном фоне.

– подсказка для команды COLOR.

Специальные символы CMD

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

– перенаправление вывода
– перенаправление ввода

Для вывода справки не на экран а, например, в файл с именем help.txt, можно использовать следующую команду:

HELP > help.txt
При выполнении данной команды, в текущем каталоге будет создан файл с именем help.txt, содержимым которого будет результат вывода команды HELP. Если файл help.txt существовал на момент выполнения команды, его содержимое будет перезаписано. Для того, чтобы дописать данные в конец существующего файла, используют удвоение символа перенаправления вывода – “>>”

HELP GOTO > myhelp.txt – в файл myhelp.txt будет выдана справка по использованию команды GOTO
HELP COLOR >> myhelp.txt – в конец файла myhelp.txt будет дописана справка по использованию команды COLOR

Простейший пример перенаправления ввода:

cmd.exe < commands.txt – командный процессор не будет ожидать ввода команд с клавиатуры, а считает их из файла commands.txt. Фактически, указанный текстовый файл в данном случае является командным файлом.

   
При запуске командного процессора можно указать конкретную команду в качестве аргумента командной строки:

cmd.exe /C HELP FOR – выполнить команду HELP FOR и завершиться (параметр командной строки или ключ /C)

cmd.exe /K HELP FOR – выполнить команду HELP FOR и перейти в режим ожидания дальнейшего ввода команд (ключ /K)

Подробную справку по использованию cmd.exe можно получить, введя в качестве аргумента ключ /?

& – одиночный амперсанд используется для разделения нескольких команд в одной командной строке.

команда1 & команда2 – выполняется первая команда, затем вторая команда.

&& – удвоенный амперсанд между двумя командами, означающий условное выполнение второй команды. Она будет выполнена, если код завершения (или код возврата) первой команды равен нулю, т.е. команда выполнена успешно. Успешность
выполнения команды определяется значением специальной переменной среды ERRORLEVEL.

команда1 && команда2 – выполняется команда1, а команда2 выполняется, только если первая была выполнена успешно.

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

cmd.exe /C “HELP IF” & ”HELP IF”

Завершится выполнением первой команды и сообщением об ошибке для второй:


“”HELP” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Как и в любом другом языке программирования, в сценариях CMD невозможно обойтись без переменных. Для получения их значения применяется специальный символ – знак процента % . Строка, заключенная в знаки процента интерпретируется как значение переменной, например:

Символ ^ , являющийся последним символом строки, используется как признак продолжения предыдущей. Это относится как к тексту, так и к командам.

Использование переменных окружения в командных файлах.

   
При работе с командными файлами невозможно обойтись без переменных окружения (environments) – переменных, значения которых определяют среду, в которой выполняются команда или пакетный файл. Часто их называют переменными среды. Значения, принимаемые этими переменными формируются при
загрузке Windows, регистрации пользователя в системе, старте или завершении
некоторых приложений, и, кроме того, могут быть заданы с помощью специальной
команды
SET переменная = значение

SETX переменная = значение

Первая присваивает значение переменной, действующее до завершения текущей сессии командной строки. Вторая – значение, действующее постоянно.

Как уже упоминалось выше, значение, присвоенное какой-либо переменной, доступно для обработки в командной строке или в командном файле с использованием ее имени, заключенного в знаки процента – % . Системные переменные позволяют получить сведения об аппаратной и программной среде, в которой выполняется командный файл, что позволяет реализовать его исполнение на разных компьютерах, независимо от их конкретной конфигурации и пользовательских настроек. Например, в командном файле используется вывод содержимого системного каталога C:\Windows :

DIR C:\Windows

Алгоритм, реализуемый данным командным файлом, будет прекрасно выполняться до тех пор пока не встретится компьютер с Windows установленной не на диск C:, а например, на D:. Чтобы этого не происходило, желательно использовать системную переменную WINDIR, принимающую значение пути системного каталога:

На практике, с помощью команды SET обычно задается и модифицируется путь поиска исполняемых программ
– переменная окружения PATH.

SET PATH=C:\Windows; C:\windows\system32
Данная команда определяет, что поиск исполняемых файлов будет выполняться в
каталоге C:\Windows и, если результат неуспешен, в
C:\windows\system32

При необходимости выполнить программу, например, myedit.exe, размещенную в
каталоге C:\NewProgs необходимо либо указать полный путь исполняемого файла, либо сделать текущим каталогом каталог с программой и использовать только его имя. Если в командной строке не задан полный путь, а только имя
исполняемого файла – myedit.exe

то сначала будет выполняться поиск файла myedit.exe в текущем каталоге, и если
он не будет найден – в каталогах, список которых определяется значением переменной
PATH. Символ ; является разделителем элементов в списке путей поиска.
Если в приведенном примере, текущим каталогом не является
C:\NewProgs, и в остальных каталогах, заданных значением переменной
PATH, нет исполняемого файла myedit.exe, то попытка его запуска
завершится ошибкой. Однако, если модифицировать значение переменной PATH, добавив в нее требующийся каталог, то указание полного пути исполняемого файла становится необязательным.
Команда

:/>  Установка windows 7 на mac с флешки без bootcamp


изменит текущее значение PATH,
добавив каталог C:\NewProgs в начало списка. Для добавления каталога в конец списка используется несколько иная конструкция:

SET PATH=%path%; C:\NewProgs

   
Выполнение команды SET без параметров позволяет получить текущие
значения переменных окружения:


NUMBER_OF_PROCESSORS=1 – количество процессоров

OS=Windows_NT- тип ОС

Path=C:\WINDOWS\system32; C:\WINDOWS;C:\Program Files\Far – путь поиска исполняемых файлов.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE; .JS;.JSE;.WSF;.WSH – расширения для исполняемых файлов.

PROCESSOR_ARCHITECTURE=x86 – архитектура процессора.

PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD – идентификатор процессора.

PROCESSOR_LEVEL=6 – уровень (номер модели) процессора.

PROCESSOR_REVISION =0801 – версия процессора.

ProgramFiles=C:\Program Files – путь к папке “Program Files”

PROMPT=$P$G – формат приглашения командной строки $P – путь для текущего каталога $G – знак “>”.

SystemDrive=C: – буква системного диска.

SystemRoot= C:\WINDOWS – каталог ОС Windows.

Значения некоторых переменных по команде SET не отображаются, хотя и присутствуют в системе. В основном, это переменные, принимаемые значения которых динамически изменяются:


%CD% – Принимает значение строки текущего каталога.

%DATE% – Принимает значение текущей даты.

%TIME% – Принимает значение текущего времени.

%RANDOM% – Принимает значение случайного десятичного числа в диапазоне 1 -32767.

%ERRORLEVEL% – Принимает текущее значение кода завершения задачи ERRORLEVEL

%CMDEXTVERSION% – Принимает значение версии командного процессора CMD.EXE для расширенной обработки команд.

%CMDCMDLINE% – Принимает значение строки, которая вызвала
командный процессор.

Значения, принимаемые переменными окружения, могут быть расширены с помощью
специального признака – символа ” ~ “, что позволяет получить их частичное
значение, или изменить его подменой какой-либо части. Практические примеры использования расширений переменных будут рассмотрены ниже.

Подробное описание команд с примерами их использования имеется в разделе Список команд CMD Windows.

Передача параметров командному файлу.

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


params.bat FIRST second “two words”

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

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

REM пробел текст
Строки, начинающиеся с REM пробел, считаются комментариями и командным процессором игнорируются.

Переходы и метки.

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

Исходные данные: имеется 2 съемных диска, один из которых должен быть виден в проводнике как диск X: , а второй – как диск Y: независимо от того, в какой порт USB они подключены и какие буквы присвоены им операционной системой. Для назначения букв дискам можно воспользоваться командой SUBST.
Будем считать, что реальные диски могут быть подключены как F: или G:
Опознавание дисков будем выполнять по наличию файла с определенным именем
(лучше всего такой файл сделать скрытым в корневом каталоге съемного диска и назвать его как-нибудь необычно):

Flashd1.let – на первом диске

Flashd2.let – на втором

Таким образом, задача командного файла заключается в том, чтобы проверить
наличие на сменных дисках F: и G: файлов Flashd1.let
или Flashd2.let и, в зависимости от того, какой из них присутствует,
присвоить диску букву X: или Y:

Для поиска файла на диске воспользуемся командой :

IF EXIST имя_файла команда

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

SUBST X: C:\ – – создать виртуальный диск
X:, содержимым которого будет корневой каталог диска C:

   
Для решения поставленной задачи, создаем командный файл, например с именем setletter.bat, следующего содержания:

setletter.bat


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

При выполнении измененного таким образом командного файла, сообщение об
ошибке при выполнении SUBST исчезнет.

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

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

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

– приостановить выполнение командного файла до
нажатия любой клавиши.


Если же в файле test.bat убрать CALL, оставив “1.bat”, то , выполнится командный файл 1.bat, и возврат в test.bat выполняться не будет.

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

Переменные вызываемого файла будут доступны в вызывающем файле.

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


Выйти из зацикливания командного файла можно по нажатию комбинации
CTRL+Break.

Команда CALL может использоваться не только для вызова другого командного файла, но и для вызова внутренней подпрограммы. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:

Примеры командных файлов.

   
Использование утилит командной строки и командных файлов нередко позволяют
решить многие проблемы связанные с повседневной эксплуатацией компьютерной
техники. Большинство системных администраторов и грамотных пользователей
продолжают ими пользоваться, несмотря на то, что в Windows проявилось новое,
более мощное и современное средство управления системой – WMI
(Windows Management Instrumentation) и многофункциональная оболочка пользователя Power Shell. Очевидно, не в последнюю очередь, это
обусловлено простотой реализации и достаточной
эффективностью командной строки для решения повседневных задач обслуживания системы.

Ниже приведены простые
примеры с комментариями, которые демонстрируют некоторые возможности и
способы применения .cmd и .bat

Оставьте комментарий