W2k - робота з командним рядком (), windows, adminstuff

У наступній таблиці представлені доступні дескриптори.
дескриптор Числовий еквівалент дескриптора Опис
STDIN 0 Введення з клавіатури
STDOUT 1 Висновок у вікно командного рядка
STDERR 2 Помилка виведення у вікно командного рядка
UNDEFINED 3-9 Дескриптори визначаються індивідуально
для кожної прикладної програми

Щоб визначити перенаправлення для існуючих дескрипторів, використовуйте знак амперсанд (), за яким йде номер перенаправляє дескриптора (тобто, номер_дескріптора). Наприклад, для перенаправлення дескриптора 2 (STDERR) в дескриптор 1 (STDOUT) введіть:
2> 1

У наведеній нижче таблиці описано оператори перенаправлення потоків введення і виведення.
Оператор перенаправлення Опис
> Записує дані на виході команди замість вікна командного
рядки або дескриптора
в файл або на пристрій, наприклад, на принтер.
<Читает поток входных данных команды из файла, а не с
клавіатури або дескриптора.
>> Додає вихідні дані команди в кінець файлу, що не
видаляючи при цьому існуючої інформації з файлу.
> Зчитує дані на виході одного дескриптора як вхідні
дані для іншого дескриптора.
<& Считывает входные данные одного дескриптора как выходные
дані іншого дескриптора.
| Зчитує вихідні дані однієї команди і записує їх
на вхід іншої команди.
Ця процедура відома під назвою «канал».
За замовчуванням, вхідні дані команди (дескриптор STDIN) відсилаються з клавіатури інтерпретатора команд Cmd.exe, і Cmd.exe відправляє вихідні дані команди (дескриптор STDOUT) в вікно командного рядка.

Перенаправлення входу (<)
Щоб перенаправити вхід з клавіатури в файл або на пристрій, використовуйте оператор «<». Например, для ввода данных в команду sort из файла File.txt введите:
sortВміст файлу File.txt з'явиться в командному рядку у вигляді списку в алфавітному порядку.
оператор «<» открывает файл с заданным именем только для чтения. Поэтому с его помощью нельзя записывать в файл. Например, при запуске программы с помощью перенаправления <&2 все попытки прочитать дескриптор 0 заканчиваются неудачей, так как дескриптор 2 первоначально открыт с доступом только для чтения.

Примітка
• Нуль - це дескриптор за замовчуванням для оператора перенаправлення вводу «<».

Перенаправлення виведення (>)
Вихідні дані практично всіх команд висвічуються у вікні командного рядка. Навіть команди, які виведуть дані на диск або принтер, видають повідомлення і запити у вікні командного рядка. Щоб перенаправити висновок з вікна командного рядка в файл або на пристрій, використовується оператор «>». Цей оператор використовується з більшістю команд. Наприклад, для перенаправлення виводу команди dir в файл Dirlist.txt введіть:
dir> dirlist.txt
Якщо файл Dirlist.txt не існує, інтерпретатор команд Cmd.exe створить його. Якщо файл існує, Cmd.exe замінить інформацію в файлі на дані, отримані від команди dir.

Для запуску команди netsh routing dump і відправки результатів її роботи в файл Route.cfg введіть:
netsh routing dump> c: \ route.cfg

Оператор «>» відкриває вказаний файл тільки для запису. Тому за допомогою даного оператора файл прочитати не можна. Наприклад, при запуску програми з перенаправленням> 0 всі спроби записати дескриптор 1 закінчуються невдачею, так як дескриптор 0 спочатку відкритий з доступом тільки для читання.

Примітка
• Одиниця є дескриптором за умовчанням для оператора перенаправлення виведення «>».

Використання оператора «» для перенаправлення вводу і дублювання
Щоб використовувати оператор перенаправлення вводу (<) с оператором дублирования (&), указанный файл должен существовать. Если входной файл существует, Cmd.exe открывает его только для чтения и отправляет его содержимое в файл, как если бы ввод выполнялся с клавиатуры. При задании дескриптора интерпретатор команд Cmd.exe дублирует его в дескриптор, существующий в системе.

Для відкриття файлу File.txt, сортування його вмісту і подальшої відправки в вікно командного рядка (т. Е. В потік STDOUT) введіть:
sort

Для того щоб знайти файл File.txt і перенаправити дескриптор 1 (STDOUT) і дескриптор 2 (STDERR) в Search.txt введіть:
findfile file.txt> search.txt 2<&1

Для дублювання певного користувачем дескриптора 3 в якості вхідної інформації для дескриптора 0 (STDIN) введіть:
<&3

Використання оператора «» для перенаправлення виводу і дублювання
При перенаправлення виведення в файл і завданні існуючого імені файлу інтерпретатор команд Cmd.exe відкриває файл з доступом тільки для запису і переписує його вміст. Якщо дескриптор заданий, інтерпретатор команд Cmd.exe дублює файл в існуючий дескриптор. Для дублювання певного користувачем дескриптора 3 в дескриптор 1 введіть:
> 3
Для перенаправлення всіх вихідних даних, включаючи вихідні дані дескриптора 2 (потік STDERR), з команди ipconfig в дескриптор 1 (потік STDOUT) і подальшого перенаправлення вихідних даних в файл Output.log, введіть:
ipconfig.exe >> output.log 2> 1

Використання оператора «>>» для додавання виведення
Для додавання виведення в файл без втрати його даних використовується подвійний символ «більше» (тобто >>). Наприклад, наступна команда додає список каталогів, створений командою dir, в файл Dirlist.txt:
dir >> dirlist.txt

Для додавання вихідних даних команди netstat в кінець файлу Tcpinfo.txt введіть:
netstat >> tcpinfo.txt

Використання оператора каналу (|) - pipe
Оператор каналу «вертикальна лінія» (|) забирає вихідні дані однієї команди (за замовчуванням STDOUT) і направляє їх на вхід іншої команди (за замовчуванням STDIN). Наприклад, наступна команда сортує каталог:
dir | sort

В даному прикладі обидві команди запускаються одночасно, але команда sort призупиняє роботу до отримання вихідних даних команди dir. Команда sort використовує вихідні дані команди dir в якості своїх вхідних даних, а потім свої вихідні дані відправляє в дескриптор 1 (STDOUT).

Комбінування команд з операторами перенаправлення
Комбінуючи команди-фільтри з іншими командами і іменами файлів, можна створювати команди на замовлення. Наприклад, можуть містити імена файлів, що містять рядок «LOG», використовується наступна команда:
dir / b | find "log" loglist.txt
Вихід команди dir відсилається в команду-фільтр find. Імена файлів, що містять рядок «LOG», зберігаються в файлі Loglist.txt у вигляді списку (наприклад, NetshConfig.log, Logdat.svd і Mylog.bat).

При використанні більш одного фільтра в одній команді їх необхідно відокремлювати за допомогою каналу (|). Наприклад, наступна команда шукає в кожному каталозі диска C файли, в назві яких є рядок «Log», і виводить їх посторінково на екран:
dir c: \ / s / b | find "log" | more
Наявність каналу (|) вказує Cmd.exe, що вихід команди dir потрібно відправити команді-фільтру find. Команда find вибирає тільки ті імена файлів, в яких міститься рядок «LOG». Команда more виводить на екран імена файлів, отримані командою find з паузою після заповнення кожного екрана.

5. Для командного рядка можливе використання фільтрів, що дозволяє управляти виведенням інформації. Всього є 3 команди-фільтра:
More Показує вміст файлу або виведення команди в одному вікні командного рядка за раз.
Find Пошук зазначених символів в файлах і виході команди.
Sort Сортування файлів і виходу команди в алфавітному порядку.

6. Використання декількох команд і символів умовної обробки
Можна виконувати кілька команд з однієї командного рядка або сценарію за допомогою символів умовної обробки. При використанні декількох команд, що містять символи умовної обробки, виконання команд, що стоять праворуч від символу умовної обробки, буде проводитися в залежності від результатів виконання команди, що стоїть зліва від символу. Наприклад, потрібно, щоб команда виконувалася, тільки якщо попередня команда не була виконана успішно. Або потрібно, щоб команда виконувалася, тільки якщо попередня команда була виконана успішно.

Для передачі декількох команд можна використовувати спеціальні символи, перераховані в наступній таблиці.
Символ Синтаксис Визначення
[. ] команда1 команда2 Використовується для поділу декількох
команд в одній командному рядку.
У Cmd.exe виконується перша команда,
потім друга команда.
[. ] команда1 команда2 Запускає команду, яка стоїть за символом ,
тільки якщо команда, що стоїть перед цим
символом була виконана успішно.
У Cmd.exe виконується перша команда.
Друга команда виконується, тільки якщо
перша була виконана успішно.
|| [. ] Команда1 || команда2 Запускає команду, яка стоїть за символом ||,
тільки якщо команда, що стоїть перед
символом || не було виконане.
У Cmd.exe виконується перша команда.
Друга команда виконується, тільки якщо
перша не була виконана (отриманий код
помилки перевищує нуль).
() [. ] (Команда1 команда2) Використовується для угруповання або вкладення
команд.
; або. команда1 параметр1; параметр2 Використовується для поділу параметрів
команди.

Примітки
• Амперсанд (), вертикальна риса (|) і дужки () є спеціальними символами, яким повинен передувати керуючий символ (^) або лапки, якщо ці символи передаються в якості аргументів.
• Якщо команда завершує операцію успішно, повертається нульовий (0) код помилки або; не повертається ніякого коду. Інформацію щодо кодів завершення см. В розділі Використання пакетів Windows Deployment Kit і Windows Resource Kit.

7. Використання оператора каналу (|) в скрипті vbs
- створіть файл test.vbs з таким вмістом:
WScript.Echo "calc"
- наберіть в командному рядку
cscript test.vbs // Nologo | cmd
після натискання Enter запуститься калькулятор

Схожі статті