cmd

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

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

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

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

Например, следующий код создает новую папку с именем текущей даты на системном диске компьютера и экспортирует из реестра Windows куст HKEY_CURRENT_USER\Software в файл с именем backup.reg.

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

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

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

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

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

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

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

chcp 1251

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

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

 

Комментарии  

#1 Любомир 26.01.2015 21:01
Спасибо :lol:
Цитировать
#2 Сергей Иванович 27.11.2016 13:30
Спасибо за "chcp 1251" !!!
Цитировать
#3 Nancee 09.02.2018 16:43
Hmm it seems like your site ate my first comment (it was extremely long) so I guess I'll just sum it up what I had written and say, I'm thoroughly enjoying
your blog. I too am an aspiring blog blogger but I'm
still new The Easiest Way to Write an Essay: http://assignmenthelp24.com/the-easiest-way-to-write-an-essay/ everything.
Do you have any tips for newbie blog writers? I'd definitely appreciate it.
Цитировать
#4 Lorna 08.03.2018 00:33
Oh my goodness! Amazing article dude! Thanks, However I am
going through difficulties with your RSS. I don't understand the reason why I can't subscribe to it.
Is there anyone else getting the same RSS issues? Anybody who knows the solution can you kindly respond?
Thanks!!

Have a look at my site; Assignment Help: http://assignmenthelp24.com
Цитировать
#5 Brittney 13.03.2018 07:46
Thank you for the auspicious writeup. It in fact was a amusement account it.
Look advanced to far added agreeable from you!

However, how can we communicate?

Also visit my web-site; vedi foto dieta prima e dopo: http://xatiyo.dieta-vita.com
Цитировать
#6 Leonard 25.03.2018 16:30
Thanks very nice blog!

Μy page mezo: http://mezocoupons.blogspot.com/
Цитировать
#7 Arron 26.03.2018 02:06
Hey I know this is off topic but I was wondering if you knew of any widgets
I could add to my blog that automatically tweet my newest twitter updates.

I've been looking for a plug-in like this for quite
some time and was hoping maybe you would have some experience
with something like this. Please let me know if you run into
anything. I truly enjoy reading your blog and I look forward to your new updates.


Also visit my web site ... Extended Definition Essay On Heroes: http://ukarab.2essaywriter.com/24-extended-definition-essay-on-heroes.html
Цитировать
#8 Ona 06.04.2018 05:44
Howdy! I could have sworn I've been to this website before but after
checking through some of the post I realized it's new
to me. Nonetheless, I'm definitely glad I found it and I'll be bookmarking and checking
back frequently!

Have a look at my web-site :: Abeer Mahmoud: https://venorex.wordpress.com/
Цитировать
#9 Gladys 11.04.2018 23:16
Ahaa, its pleasant conversation regarding this article here at this website, I have read
all that, so at this time me also commenting at this place.



Here is my blog - Sally Hussin: https://venorex.wordpress.com/
Цитировать
#10 Linnea 12.04.2018 10:56
Having read this I believed it was very enlightening.
I appreciate you finding the time and effort to put this content together.
I once again find myself spending way too much time both reading
and leaving comments. But so what, it was still worthwhile!


my blog post Amir Ali: https://venorex.wordpress.com/
Цитировать

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


Защитный код
Обновить