Вновь про cmd.exe

Персональный блог одноименного форумчанина. Человека и парохода, не побоюсь этого сравнения :)

Модератор: tyomitch

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Вновь про cmd.exe

Сообщение tyomitch » 31.05.2006 (Ср) 17:58

Чен продолжает постить интересные заметки об особенностях командного интерпретатора Windows NT.

* Вот, например: при перенаправлении в файл можно указывать, которые из потоков (STDOUT, STDERR или оба) будут перенаправляться. В принципе, я уже знал об этом из какой-то статьи в KB, но рассчитываю, что для кого-нибудь эта возможность окается новой: ведь в обычном command.com её не было. (Хотя, кажется, это стандартная юниксовая фича.)

Код: Выделить всё
C:\>dir foo >out &echo ---- &type out
Файл не найден
----
Том в устройстве C имеет метку MYCOMP'SHDD
Серийный номер тома: C4CC-1CD9

Содержимое папки C:\


C:\>dir foo 2>out &echo ---- &type out
Том в устройстве C имеет метку MYCOMP'SHDD
Серийный номер тома: C4CC-1CD9

Содержимое папки C:\

----
Файл не найден

C:\>dir foo >out 2>&1 &echo ---- &type out
----
Том в устройстве C имеет метку MYCOMP'SHDD
Серийный номер тома: C4CC-1CD9

Содержимое папки C:\

Файл не найден

C:\>


* Операторы перенаправления могут быть в любом месте командной строки:
Код: Выделить всё
C:\>echo foo >out &type out
foo

C:\>echo >out foo &type out
foo

C:\>>out echo foo &type out
foo

C:\>

Про эту фичу я раньше не знал, но сегодня, пользуясь случаем, проверил: в sh(1) она тоже есть. Интересно, зачем она нужна? дань традиции?


* Третья любопытная фича -- именно дань традиции; она относится не конкретно к cmd.exe, а к Винде вообще, но именно в батниках она полезнее всего.

Специальные файлы (NUL, CON, PRN и т.д.) "существуют" в каждой папке. Поэтому по традиции папку проверяют на существование оператором exist dirname\nul:
Код: Выделить всё
C:\>if exist windows\nul echo Windows found.
Windows found.

C:\>if not exist dos\nul echo DOS not found.
DOS not found.

C:\>

В принципе, в cmd.exe "\nul" можно и не писать, но в command.com это было обязательно.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.05.2006 (Ср) 19:15

Ну уж третью фичу знал любой, кто более-менее знал, что такое командная строка :)
Вторая фича помоему бесполезна.
А вот про первую я не знал :)

Кстати, не думаю, что тебя удивлю, но возможно другие не знают, что перенаправлять можно не только в файл, но и в поток(и) файла.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Tyomitch

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList