Найти тему

Windows 10. Операторы, каналы и цепочки команд в командной строке

Оглавление

Предыдущие статьи были посвящены основам работы и синтаксису командной строки Windows.

Перейдем к операторам перенаправления ввода-вывода, каналам и объединению команд в цепочки.

Операторы перенаправления ввода-вывода

Как правило, под устройством ввода в командной строке подразумевается клавиатура, а устройством вывода – монитор. Однако операторы перенаправления ввода-вывода позволяют заменить их другими устройствами или файлами.

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

Например, если последовательно выполнить команды:

ping -n 5 ya.ru > c:\ping.txt

ping -n 10 ya.ru > c:\ping.txt

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

>> - оператор перенаправления вывода, при котором новые данные дописываются в конец файла, не заменяя собой старые.

В качестве примера сохраним в файл info.txt имя компьютера и учетной записи пользователя последовательным вводом команд:

hostname > c:\info.txt

echo %username% >> c:\info.txt

Использование оператора вывода с записью в файл
Использование оператора вывода с записью в файл

В файле info.txt сохранятся результаты вывода обеих команд.

Результат выполнения команд
Результат выполнения команд

< - оператор перенаправления ввода, который позволяет считывать данные с указанного устройства или файла.

Убедимся в этом, создав файл host.txt, содержащий строку ping ya.ru. А затем направим содержимое файла в качестве ввода для командной строки:

Cmd < c:\host.txt

Использование оператора ввода
Использование оператора ввода

Каналы

Выходные данные одной команды могут передаваться в качестве вводных данных для другой. Такая процедура называется "канал".

| - оператор, который позволяет считывать и передавать выходные данные от одной команды на вход другой команде.

Например, чтобы получить из вывода команды ipconfig /all только строку с адресом DHCP-сервера, а затем сохранить ее в файл dhcp.txt, можно воспользоваться каналом и фильтром find:

ipconfig /all | find "DHCP-сервер" > c:\dchp.txt

Использование канала в командной строке
Использование канала в командной строке

В файл запишется следующая информация:

Результат вывода команды ipconfig /all | find "DHCP-сервер" > c:\dchp.txt
Результат вывода команды ipconfig /all | find "DHCP-сервер" > c:\dchp.txt

В командной строке Windows существует 3 команды-фильтра:

Find - поиск указанных символов в файлах или выводе команды.

More - отображение содержимого файла или вывода команды в одном окне командной строки.

Sort - сортировка содержимого файла или вывода команды в алфавитном порядке.

Объединение команд в цепочку

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

& - используется для разделения нескольких команд в одной командной строке. При этом следующая команда выполняется независимо от результата выполнения предыдущей. Например:

ping yandex.ru & ping ya.ru

Разделение команд символом условной обработки &
Разделение команд символом условной обработки &

Обе команды выполнились успешно. И даже если же для первой указать несуществующий ресурс:

ping яндекс.ру & ping ya.ru

Разделение команд символом условной обработки &
Разделение команд символом условной обработки &

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

&& - запускает команду после символа && только при условии успешного выполнения предыдущей команды. Рассмотрим отличия:

ping yandex.ru && ping ya.ru

Разделение команд символами условной обработки &&
Разделение команд символами условной обработки &&

Поскольку первая команда отработала успешно, общий результат выполнения аналогичен примеру номер один. Однако, если первая команда завершится ошибкой:

ping яндекс.ру && ping ya.ru

Разделение команд символами условной обработки &&
Разделение команд символами условной обработки &&

Вторая команда выполнена не будет.

|| - выполняет команду, стоящую после символа ||, при условии невыполнения предыдущей команды. Проверим:

ping yandex.ru || ping ya.ru

Разделение команд символами условной обработки ||
Разделение команд символами условной обработки ||

Первая команда отработала успешно, поэтому вторая не стала выполняться. В обратном случае:

ping яндекс.ру || ping ya.ru

Разделение команд символами условной обработки ||
Разделение команд символами условной обработки ||

Вторая команда будет выполнена.

До продвинутого владения командной строкой Windows осталось совсем немного. Заключительная статья будет посвящена использованию дескрипторов.

Поэтому подписывайтесь на канал и следите за новинками!