- Командные или пакетные файлы (command/batch files)
- Вывод сообщений
- Обработка аргументов
- Комментарии
- Некоторые полезные примеры
- Пример архивации WinRar
- Пример копирования
- Имена файлов и путь
- Переменные
- Ветвление (If)
- Метки
- Цикл For
- Дополнительный функционал
- Задание для разработки
- Некоторые полезные ссылки
- Команды командной строки Windows — самые важные и полезные
- Как открыть командную строку Windows?
- Параметры команд и получение помощи
- Запуск системных компонентов и программ из командной строки
- Работа с файлами и папками из командной строки
- Востребованные сетевые команды командной строки
- Редко используемые, но очень полезные команды
Командные или пакетные файлы (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.
Далее, комментарии, внесенные в текст программ для пояснения, будут окрашены .
Некоторые полезные примеры
Не надо пробовать сделать это ручками — замучаетесь. Зачастую проще скопировать строку из готового файла и отредактировать её.
Пример архивации WinRar
Конечно, это можно: 1) каждый раз набирать руками, 2) выполнить настройки в графическом интерфейсе. Но, кажется, глупость подобных действий должна быть очевидной.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Пример копирования
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Имена файлов и путь
Имена, содержащие пробелы, могут интерпретироваться правильно, но это происходит далеко не всегда. Во избежание проблем, следует всегда заключать их в кавычки:
«C:\Documents and Settings\»
Переменные
Единственное уточнение коснется того, что переменные используются с окружением их знаками процента (%), как это сделано в приведенных ниже примерах.
Задание значений переменной осуществляется командой set, например, команда
создаст переменную var, содержащую строку «корова».
Использование ключа /P позволяет осуществить ввод пользователем.
SET /P variable=[строка_подсказки]
Ключ /A позволяет провести вычисления с использованием более двух десятков операторов.
Полная справка о работе команды может быть получена вызовом в командной строке
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Ветвление (If)
Оператор условного выполнения команд IF позволяет производить те или иные действия в зависимости от имеющихся обстоятельств. Последние могут существовать (то есть анализироваться командным файлом), либо задаваться действиями пользователя.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Метки
Поскольку язык достаточно примитивный и разрабатывался давно, он поддерживает так называемые безусловные переходы (переход к метке) для упрощения решений линейного программирования. Ряд ситуаций за счет этого решается на порядок быстрее и проще, чем в современных языках. Не надо следовать за безголовыми критиками данного подхода, это — данность, которой надо пользоваться.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Цикл For
По существу, данную конструкцию можно использовать в качестве рубежа необходимых знаний. Особенно учитывая принципиальное отличие от применения в других языках программирования.
Полная справка о работе команды может быть получена вызовом в командной строке
В целом, назначение можно охарактеризовать, как разделение сложных объектов на составляющие путем последовательного перебора.
Для ясности, приведем основные направления использования команды FOR.
- Обработка массива переменных памяти.
- Обработка совокупности файлов в папке и/или подпапках.
- Обработка файла, как совокупность строк.
- Формирование числовой последовательности (близко к стандартному программному использованию).
Я очень долго обдумывал необходимость включения этой темы в курс обучения в связи с ее противоречивостью. С одной стороны, это, как минимум, на порядок повышает сложность. С другой — на несколько порядков расширяет возможности и «интеллектуальность» создаваемых программ. Перелом произошел при очередной личной необходимости создания диалоговых возможностей для пользователей. Восстановление знаний и попытки разобраться с «записками сумасшедшего», равномерно рассеянными на просторах Интернета, перевесили. Описание будет, но не войдет в очный курс.
Некоторые теоретические предпосылки.
- Программа может выполняться очень долго, вплоть до нескольких часов. Пользователь не должен запустить эту процедуру случайно, требуется подтверждение.
- Для запуска может потребоваться выбор варианта, например, долгий (архивируем все) или краткий (только файлы *.doc). Суть: тонкая настройка процесса действиями, понятными для рядового пользователя.
- Программирование выбора фиксированных существующих мест, то есть, какую из 5 папок обработать типовой процедурой.
- Один из моих случаев: создать архив чего (то есть быстро/медленно) и где (локально, в сети или и в обоих расположениях, что также скажется на времени)?
- .
Суть меню сводится к формированию поясняющего текста и ожидания от пользователя нажатия на клавишу, результат которого считывается в переменную.
В приведенном ниже примере создано примитивнейшее (но реальное) меню из двух пунктов, контролирующее факт запуска.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Дополнительный функционал
Сюда будет уходить всякая «экзотика», которая может пригодиться для реализации мелких идей. Это — почти готовые решения и в зачет заданий в чистом виде (без внедрения) они не пойдут.
P.S.! Большинство идей приходят из студенческих работ.
Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
- Студент I/II курса ВХК РАН
Задание для разработки
Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
- Студент I/II курса ВХК РАН
Некоторые полезные ссылки
К сожалению, часть ссылок на очень качественный материал отсюда убрана, так как ресурсы исчезли. Делайте выводы.
- CMD/BAT — Форум программистов и сисадминов
- Описание основных возможностей сценариев командной строки
- Командная строка. Сайт посвящен именно этой теме. Не для рядовых пользователей, но есть много полезных советов.
- Командные файлы Windows. Страница значительно расширяет материал и содержит важную информацию.
Команды командной строки Windows — самые важные и полезные
Выполнение множества задач в операционных системах Windows возможно не только при использовании привычного графического пользовательского интерфейса, но и при помощи интерпретатора командной строки (командной строки, консоли). Через него можно изменять различные системные параметры, управлять файлами и папками, запускать системные компоненты и любые программы, выполнять иные операции. Рассмотрим наиболее важные команды командной строки Windows, которые могут пригодиться любому пользователю.
Как открыть командную строку Windows?
Некоторые из консольных команд можно выполнить лишь из учетной записи администратора. Потому лучше сразу запомнить, как запускать интерпретатор с максимальным количеством прав доступа к системе. В ОС Windows 7/8/10 делается это просто:
- Откройте «Поиск» в/около меню «Пуск».
- Впишите поле поиска «Командная строка».
- В результатах поиска отобразится нужная нам программа. Кликните по ней правой кнопкой мыши, затем выберите из выпадающего меню пункт «Запустить от имени администратора».
Но для выполнения простых команд консоль Windows можно запускать и без прав администратора. Проще всего это сделать следующим образом:
- Нажмите на клавиатуре клавиши «Win» и «R».
- Откроется окно «Выполнить».
- Впишите в него команду cmd и нажмите «ОК».
Так или иначе, системное приложение «Командная строка Windows» будет запущена и готова выполнению пользовательских команд:
Параметры команд и получение помощи
Прежде чем приступать к изучению команд, следует понимать два важных момента:
- У многих команд существуют изменяемые параметры, уточняющие выполнение командой той или иной функции.
- По любой команде можно получить помощь прямо в окне интерпретатора. Для этого следует сразу после команды вписать «/?«, что также является параметром.
Возьмем, к примеру, одну из наиболее востребованных команд ping. Впишите в консоль следующую строку:
ping /?
Подобным способом можно получить справку по большинству команд (в основном по тем, у которых имеются атрибуты).
Запуск системных компонентов и программ из командной строки
Здесь стоит отметить, что запускать системные компоненты и программы все же проще не напрямую из командной строки, а из ранее упомянутого приложения «Выполнить». Но разницы в синтаксисе (написании) самих команд никакой нет. В обоих случаях после ввода команды достаточно нажать «Enter».
Вот список наиболее востребованных команд для запуска системных приложений и компонентов:
- control — запуск «Панели управления Windows».
- regedit — запуск «Редактора реестра».
- devmgmt.msc — запуск «Диспетчера устройств».
- taskmgr — запуск «Диспетчера задач».
- services.msc — запуск приложения «Службы».
- appwiz.cpl — «Программы и компоненты» («Установка и удаление программ»).
И это далеко не полный список команд запуска системных приложений и компонентов, а лишь самые востребованные у нас — обычных пользователей.
А вот 4 команды для запуска предустановленных (стандартных) в Windows программ:
- calc — запуск «Калькулятора».
- mspaint — запуск графического редактора «Paint».
- notepad — запуск текстового редактора «Блокнот».
- wordpad — запуск текстового редактора «WordPad»
Вообще, из командной строки можно запустить любую другую программу или файл. Рассмотрим, как это сделать, а заодно познакомимся с некоторыми командами по управлению файлами и папками.
Работа с файлами и папками из командной строки
Бывают ситуации, когда невозможно запустить стандартный файловый менеджер «Проводник Windows». Например, из-за действия вирусов-блокировщиков или при системных сбоях. В любом случае все, что можно сделать при помощи «Проводника», можно сделать и при помощи командной строки. Начнем с самого простого — просмотра содержимого папок.
Просмотр содержимого папки. При запуске командной строки перед мигающим курсором можно увидеть адрес расположения папки учетной записи на жестком диске. В нашем случае — это «C:\Users\vzgn»:
Давайте, выведем на экран список все других объектов (файлов и папок), содержащихся в данной папке. Для этого используйте команду dir:
Объекты, напротив которых написано — это папки, все остальное — файлы (напротив них указан размер в байтах).
Команду dir можно применять вообще папкам, расположенным в вообще любом месте на жестком диске. Для этого после команды следует указать путь до каталога. К примеру, для просмотра содержимого папки «Windows» на диске «C:» следует ввести команду:
dir c:\windows
Запомните одно простое правило. Если в именах папок/файлов присутствуют пробелы, их следует писать в двойных («имя папки или файла») кавычках.
Открытие файла из командной строки. Для открытия файла достаточно вписать его полное название вместе с расширением в командную строку. Что не вводить имя файла целиком, используйте клавишу «Tab» (с ее помощью можно поочередно перебирать имена всех объектов в текущей папке).
В нашем случае был открыт файл .pgAdmin4.startup.log при помощи «Блокнота». Если бы это был музыкальный файл, запустился бы аудиопроигрыватель, если DOC/DOCX-файл — редактор «MS Word» и т.д. Таким образом, открытие файла в командной строке равнозначно двойному клику по файлу в «Проводнике Windows».
Переход в другую папку. Для перехода в папку используется команда cd, после которой следует прописать путь к открываемой папке либо просто ее имя (если она расположена в нашем текущем местоположении на жестком диске).
Перейдем в папку «Music». Т.к. она находится в текущем каталоге, достаточно ввести в консоль:
cd music
Теперь наше местоположение изменилось на «C:\Users\vzgn\Music».
Давайте, перейдем в какую-нибудь папку, расположенную на другом локальном диске. Это можно сделать несколькими способами, но воспользуемся самым легким для запоминания.
- Для начала перейдем в сам локальный диск (изменим наше местоположение). Для этого достаточно использовать (независимо от текущего местоположения) команду e:. Вместо e можно использовать любую другую букву локального диска (или даже флешки, например):
- Допустим, нам известно, что на диске «E» существует папка «Install«, а в ней — пака «Web«. Перейти в нее можно одной командой:
cd e:\install\web
Запуск/открытие программы/файлы в другой папке или на другом диске. Запустим программу, расположенную где-нибудь глубоко на диске. Для запуска файла или программы можно просто указать полный путь до него. Текущее местоположение в этом случае не имеет значения. Запустим, например, текстовый редактор «Notepad++» одной командой:
C:\»Program Files»\Notepad++\notepad++.exe
Обратите внимание, что имя папки «Program Files» взято в кавычки, т.к. в нем присутствует пробел.
Создание, удаление и переименование файлов и папок. Из командной строки можно выполнить все эти операции над файлами и папками.
- Создание простого текстового файла — copy nul простой_текстовый_файл.txt. Перед названием файла можно указать путь до конечной папки, в которой тот будет создан (если не указать, файл создастся в текущей папке).
- Создание папки — mkdir папка. Папка также создается в текущем местоположении.
- Удаление файла (или нескольких) — del простой_текстовый_файл.txt (если требуется удалить несколько файлов, просто вписываем их имена друг за другом через пробел). Удаляем созданный ранее файл.
- Удаление папки — rmdir папка. Удаляем созданную ранее папку.
- Переименование папки/файла — ren простой_текстовый_файл.txt новое_имя_файла.txt или ren папка новое_имя_папки. Переименуем созданный файл и папку.
Через командную строку можно выполнить и ряд других операций над файлами и папками, включая копирование, перемещение, применение/изменение атрибутов (скрытый, системный, только для чтения и т.д.), слияние и т.д.
Востребованные сетевые команды командной строки
Из командной строки Windows можно взаимодействовать с сетевыми подключениями, изменять их настройки, просматривать различную информацию и многое другое. Рассмотрим наиболее востребованные сетевые команды.
Команда ping
Наверное, это самая популярная команда среди пользователей ОС Windows (как, впрочем, и других операционных систем). Предназначена она для проверки доступности и качества связи между компьютером и целевым IP-адресом. Также команда может применяться для определения IP-адреса сайта по доменному имени сайта и для выполнения других задач.
Определим, есть ли связь с каким-нибудь IP-адресом. Пусть это будет — 173.194.73.139 (IP-адрес поисковой системы Google). Вводим следующую команду:
ping 173.194.73.139
Как видим, обмен пакетами с указанным IP-адресом осуществляется, значит, связь есть. Если бы ее не было, картина была бы следующая (уберем из IP Google последнюю цифру):
«100% потерь» означает, что связь установить не удалось.
А теперь определим IP-адрес сайта по его доменному имени. Возьмем адрес softsalad.ru:
ping softsalad.ru
На изображении выше можно увидеть IP-адрес сайта, определенный по его доменному имени.
Команда tracert
А эта команда применяется для отслеживания сетевого маршрута от компьютера до целевого IP-адреса (можно использовать и доменное имя сайта):
tracert softsalad.ru
Видите, чтобы «достучаться» до сайта компьютеру в данном случае потребовалось обратиться к 12 промежуточным IP-адресам (ваш провайдер, сервер сайта и т.д.).
Команда ipconfig
С помощью этой команды можно получить информацию о настройках IP-протокола компьютера (или, грубо говоря — настройки сетевых карт). Воспользуемся данной командой с атрибутом /all, который позволит вывести более подробную информацию:
ipconfig /all
Команда getmac
Если требуется определить только MAC-адрес сетевой карты, используем эту команду без всяких атрибутов:
getmac
Редко используемые, но очень полезные команды
При помощи командной строки можно выполнять различные интересные функции (большинство приведенных ниже команд работает только с правами администратора):
Превращаем ноутбук в Wi-Fi-роутер (включение раздачи интернета с ноутбука или настольного компьютера с Wi-Fi-адаптером)
Для реализации этой затеи нужно поочередно выполнить три несложные команды:
- netsh wlan set hostednetwork mode=allow
- netsh wlan set hostednetwork mode=allow ssid=MiWiFi key=MiWiFipassword keyUsage=persistent. Вместо MiWiFi и MiWiFipassword можно использовать свои фразы. Первый параметр задает имя беспроводной сети, второй — пароль (должен состоять из 8 символов или более).
- netsh wlan start hostednetwork.
Если после выполнения каждой команды вы видите сообщения, аналогичные тем, что приведены на изображении выше, значит, все прошло успешно. Теперь к ноутбуку можно подключиться, например, с телефона так же, как и к обычному Wi-Fi-роутеру.
Удалениям службу Windows (или любую другую) через командную строку
Если попробовать удалить службу через штатное приложение «Службы», то ничего не получится (в нем попросту не предусмотрено такой функции). Однако это бывает необходимым, особенно после установки различных программ, которые устанавливают службы, но «забывают» их удалять при деинсталляции. Это легко реализуется через командную строку. Однако для начала необходимо узнать имя службы, и это можно сделать через стандартное Windows-приложение:
- Запустите программу «Службы», используя команду msc.
- Найдите в отобразившемся списке службу, которую необходимо удалить, и кликните по ней два раза мышкой:
- Нас интересует текст в блоке «Имя службы».
- Теперь вернитесь в окно командной строки и впишите в него команду:
sc delete имя_службы
- Подставьте вместо фразы «имя_службы» имя удаляемой службы. Если оно содержит пробелы, как в нашем случае, заключите имя службы в кавычки.
\
Выключаем/перезагружаем/отправляем в сон/гибернацию компьютер с задержкой. Если необходимо выключить, перезагрузить или отправить в сон компьютер с задержкой по времени, не обязательно использовать какие-либо сторонние программы — все можно сделать при помощи командной строки. Для этого достаточно использовать команду:
shutdown /s /t 60 /f
В данном случае компьютер будет выключен (параметр «/s«) через 60 секунд (параметр «/t 60«) с принудительным завершением работы всех приложений без предупреждения пользователя (параметр «/f» — обязательный при использовании таймера «/t«).
Вместо выключения компьютера «/s» использовать:
- /l — завершение сеанса (выход из учетной записи пользователя с блокировкой, если для входа требуется пароль).
- /r — перезагрузка компьютера.
- /hybrid/s — «отправка» компьютера в сон (параметр «/s» использовать обязательно).
- /h — режим гибернации (или режим максимального энергосбережения, при котором ключевые компоненты компьютера остаются включенными).
Для выключения компьютера, например, через 2 часа следует указывать в параметре «/t» число 7200 (1 час равен 3600 секундам).
Сразу после выполнения команды на экран будет выведено уведомление:
Выполнение команды всегда можно отменить (если была использована задержка), воспользовавшись:
shutdown /a
Просмотр списка запущенных процессов и завершение работы любого из них. Если по каким-то причинам не удается запустить «Диспетчер задач», но имеется доступ к командной строке, запущенный процесс может быть снят при помощи специальных команд:
- Сначала выведем на экран список всех запущенных процессов при помощи команды tasklist:
- Нас интересует идентификатор «PID» завершаемого процесса. Возьмем для примера PID процесс «NVDisplay.Container.exe» — 1100.
- Для завершения его работы используем команду taskkill /pid 1100 /f (параметр «/f» необходим для принудительного завершения работы процесса).
Чиним интернет при помощи командной строки. Разнообразные неполадки с сетевыми подключениями можно устранить «одним махом» через командную строку путем сброса настроек TCP/IP (не будем вдаваться в подробности, но если вам интересно, об это можно почитать тут — Netsh Winsock — что это и зачем нужно? .
Для выполнения этой задачи нужно поочередно ввести две команды:
netsh int ip reset
netsh winsock reset
Перезагружаем компьютер для применения изменений.
Остались вопросы, предложения или замечания? Свяжитесь с нами и задайте вопрос.