Программы для компьютера, команды Виндовс, 1

Виктор Кон
Данный рассказ я хочу посвятить основам главной программы на компьютере многих пользователей, а именно, операционной системе (ОС) Виндовс. Сейчас продают систему 8.1, а история насчитывает уже очень много самых разных версий. В наше время старые версии ОС уже можно посмотреть в браузере Гугл Хром, и даже немного в них поработать (смотри [1]). Но еще до появления Виндовс на самых первых персональных компьютерах устанавливалась система ДОС. Она не была многозадачной и не была графической. В то время графика очень медленно выполнялась и была примитивной, поэтому для ускорения системы использовался текст, а точнее текстовые команды ДОС, которые являлись частным случаем специального языка программирования автоматической работы на компьютере.

И этот командный способ использования операционной системы до сих пор существует во всех версиях ОС Виндовс. Для выполнения команд даже самые последние версии имеют консольное окно, очень напоминающее окно ДОС, в котором эти команды можно вводить. А выставляет это окно и исполняет команды специальная программа windows\system32\cmd.exe. Ее можно запускать непосредственно по адресу, по иконке, а можно и в Проводнике (файловом менеджере системы Виндовс) по кнопке "Открыть командную строку" в меню "Файл". Но это не удобно, потому что командную строку надо записывать руками. Есть более удобный способ, который работает во всех системах Виндовс и работал в ДОС. А именно, в системе Виндовс принято, что все файлы с расширением bat, например, "run.bat" автоматически выполняются программой windows\system32\cmd.exe, которая открывает это самое консольное окно и интерпретирует каждую строку файла как команду, которая автоматически записывается в командную строку консоли.

Этот вариант намного удобнее, потому, что файл с расширением bat можно предварительно отредактировать в любом текстовом редакторе, и файл сохраняется на винчестере, его можно копировать и многократно исполнять. В системе Юникс (Линукс) любой файл можно объявить как командный, а в системе Виндовс такое объявление происходит путем записи расширения bat. В этом смысле слова bat-файл и командный файл синонимы. Как я уже сказал, командный язык был разработан еще в ДОС, и он почти без изменений используется во всех системах Виндовс, хотя от системы к системе могут появляться новые команды. Однако старые продолжают работать.

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

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

Итак, сделайте следующее. Поставьте курсор мыши на рабочий стол в любом месте и кликните правую кнопку мыши. В появившемся меню выберите строку "Создать" и далее "Текстовый документ". На рабочем столе появится иконка с длинным названием и с расширением txt. Названия всех иконок можно редактировать. Для этого кликните мышкой на названии, откроется маленький редактор и перепишите все название на "run.bat" и нажмите клавишу [Enter]. Появится предупреждение, что изменение типа файла повлечет за собой изменение запускающей программы. Игнорируйте, потому что именно это нам и надо.

Итак, у вас появилась иконка нового файла с названием "run.bat". Но файл еще пустой. Теперь ставим курсор на иконку и снова нажимаем правую кнопку мыши. В меню выбираем строку "Изменить", она вторая сверху. Открывается текстовый редактор Notepad (Блокнот) c пустым окном. Набираем в нем две строки

help cmd
pause

и спасаем набранный текст в файле. Вот мы и получили первый командный файл, который фактически тоже является программой. Сразу объясню, что означает набранный текст. Команда "help" просто дает описание, точнее инструкцию как пользоваться командой, которая является ее аргументом. То есть командой "cmd" в нашем случае. Командные строки имеют такую структуру, что первое слово -- это всегда команда, которая выполняется, а другие слова после него, набранные через пробел, являются ее аргументами. Их может быть много и они могут быть разными, зависит от того, как написана программа. Вторая команда "pause" останавливает выполнение всех других команд и дает подсказку нажать любую клавишу. В ДОС было необходимо нажать только клавишу [Enter], сейчас можно любую. Но клавиша [Enter] все равно главнее всех других, ее и нажимайте.

Эта команда очень полезная, потому что выполнение команд производится автоматически. Когда все команды кончились, то консольное окно автоматически закрывается, и прочитать информацию, которую печатали команды, невозможно. Иногда это полезно, но не в нашем случае. Итак, теперь достаточно кликнуть на иконке и откроется консольное окно, в котором будет показано описание команды "cmd". Так же точно можно получить описание любой другой команды.

То есть фактически остается только узнать имена всех команд и указанным способом можно получить инструкцию как ими пользоваться. Я укажу еще одну команду "exit", которая в ДОС закрывала консольное окно, потому что иначе оно не закрывалось. Команда осталась, но ее выполнять уже не обязательно, так как окно и так закрывается, а, кроме того, его можно закрыть как любое окно Виндовс, кликая крестик в правом верхнем углу.

Многие команды ОС Виндовс запускают программы, которые не только получают входные параметры из командной строки, но и просят ввести какие-то значения с клавиатуры как ответ на вопрос программы, а результаты печатают в консольное окно строку за строкой. Если данных для ввода мало, а результат записывается коротко, то и достаточно. А если нет? Тогда получается очень неудобно. Возникает проблема, которую надо решать. Решение вот такое. После всех обязательных параметров можно указать имена файлов, одно имя для файла, в котором набраны все данные, которые будут запрашиваться, и второе имя для файла, в который будет напечатан результат работы. В этом случае программа будет работать полностью автоматически. При этом перед входным именем файла надо ставить знак < (меньше), а перед выходным > (больше). На самом деле эти знаки означают стрелки, показывающие откуда и куда идет информация.

Запишите в файл "run.bat" следующий текст

help > out.txt
pause

И дважды кликните на его иконке. На этот раз в консольном окне ничего не появится, зато на вашем рабочем столе появится иконка нового файла с именем "out.txt". Этот файл создала программа help, запущенная из командного файла "run.bat". Можно посмотреть его содержание в любом текстовом редакторе, например, в Notepad. И тут нас ждет первый сюрприз. Русские буквы текста нечитабельны. В чем дело? А дело в том, что Виндовс уже давно показывает русские буквы в так называемой виндовс-кодировке, а программа help продолжает показывать русские буквы в старой, то есть в дос-кодировке. Чтобы прочитать такой файл вам необходимо воспользоваться редактором, который умеет показывать текст во всех пяти кодировках русских символов, которые сейчас существуют.

Одной из таких программ является мой собственный редактор vkNotepad.jar, который можно скачать по ссылке [2]. Раньше было много самодельных программ перекодировщиков, поскольку это очень простая операция. Чтобы узнать как решить проблему сегодня я сделал запрос в интернете. Вот одно из решений. В Блокноте (Notepad) нужно выбрать шрифт "Terminal" и как раз он показывает русский текст в дос-кодировке. Есть и другие решения, но этих достаточно. Интересно почитать текст, который напечатала программа. Она сообщила, что надо набрать на командной строке имя команды, а дальше дала список некоторых команд, которые существуют в операционной системе. И это уже неплохо.

Теперь самое интересное. На командной строке, то есть в строке bat-файла можно указывать не только команды ОС Виндовс, то есть имена файлов с расширением exe и с именем как имя команды, но и любые файлы с расширением exe. Все такие файлы являются программами для ОС Виндовс и она их запускает как программы. Но если свои команды ОС знает где искать, то чужие -- в общем случае не знает. Поэтому она всегда начинает искать файл в той же папке, в которой записан bat-файл. Если он записан на рабочем столе, то и программа должна быть на рабочем столе.

Это не всегда удобно. Удобно делать наоборот, то есть записывать bat-файл в тут же папку, где находится программа. В этом случае никаких проблем не будет. Но можно указывать не только файлы с расширением exe, а и файлы с другим расширением, например, txt, что еще более удобно. Что происходит в этом случае? А вот что. Операционная система помнит таблицу, в которой написано какую программу надо запускать с каким расширением файла. И она просто выполнит эту программу, хотя сама программа явно в команде не указана.

Это очень удобно. Например, можно указать на файл с расширением pdf и запустится Акробат ридер, который покажет файл. И так далее. Таким образом можно смотреть файлы очень многих типов. Легко сообразить, что все программы, которые запускаются по расширению файлов, при их запуске с командной строки имеют имена этих файлов как параметры. Поэтому можно использовать и другой способ -- запускать такие программы в явном виде указывая в качестве параметра имя файла, который вы хотите посмотреть. Но в этом случае надо знать полный адрес такой программы. Например, у меня выполняется такая команда

c:\"Program Files (x86)"\Adobe\"Reader 11.0"\Reader\AcroRd32.exe anyfile.pdf
pause

Правда при этом система требует разрешения, но его можно дать один раз на всю работу и дальше все будет автоматически. Что здесь важно? Сам bat-файл и pdf-файл находятся в одной папке, например, на рабочем столе, а вот для программы надо указать ее полный путь. Есть очень много способов узнать полный путь программы. Он, обычно, даже запрашивается при установке программы, или сообщается в ее свойствах. Важно, что таким способом можно уже запускать любой файл с любой программой, конечно при условии, что программа способна работать с файлом, то есть его формат записи правильный для этой программы.

Еще одна особенность. Так как пробел является разделителем между командой и параметром, то все имена внутри команды, содержащие пробелы, надо помещать в кавычки. Раньше, то есть в ДОС, имена с пробелами писать было нельзя. По этой причине я и сейчас не советую называть папки русскими буквами и писать в них пробелы. Это ограничивает применимость командного управления работой компьютера. И вообще это дурной тон.

Адоб ридер -- не единственная программа, которую можно запускать таким способом. Другими важными программами являются текстовые редакторы, браузеры, видео-проигрыватели и многие другие программы. Важно, что многие программы, которые впервые появились в системе Юникс, очень удобно запускаются именно таким способом. Часто они вообще не имеют графической среды общения с пользователем. Я рассказал только самый минимум. Есть еще очень много всего интересного, но не все сразу.   

Продолжение во второй части

Ссылки

[1] [2] http://notepad-vk.narod.ru/