На что способны командные файлы Windows?

Очевидно, данная тема возникла после просмотра соседней темы под названием "Что может .bat-файл?" :)

Хотите узнать, на что способны командные файлы Windows?

Большинство пользователей ассоциируют командные файлы Windows с bat-файлами MS-DOS, при помощи которых невозможно написать что-либо серьезное. Все, на что они способны, так это запускать внешние программы, работать с параметрами и обладают оператором goto, о вреде которого все из вас уже слышали.

На самом деле, в Windows NT (а это и Windows 2000, и Windows XP) возможности командных файлов куда шире. Более того, кроме расширения .bat можно использовать расширение .cmd, что подчеркивает их отличие от старых добрых бат-файлов.

В Windows встроена справка по всем командам, вызвать ее можно следующим образом:

hh ntcmds.chm

Не буду подробно останавливаться на новых возможностях, которые сопоставимы с возможностями полноценных языков программирования. Хочу просто продемонстрировать пример.

И так, типичная задачка для студентов 1-го курса. Дана последовательность натуральных чисел, завершающаяся нулем. Найти разность между максимальным и минимальным элементами последовательности.

Вот, как можно было бы решить эту задачу в Делфи:

  1. program Max_Min;
  2. {$APPTYPE CONSOLE}
  3. var A, Max, Min: Word;
  4. begin
  5.   ReadLn (A);
  6.   Max := A; Min := A;
  7.   while A <> 0 do
  8.   begin
  9.     if Min > A then Min := A;
  10.     if Max < A then Max := A;
  11.     ReadLn (A);
  12.   end; {while}
  13.   WriteLn ('Max - Min = ', Max - Min);
  14.   ReadLn;
  15. end.

А теперь решение с помощью командного файла:

  1. @ echo off
  2. title Max - Min
  3. set /p A=
  4. set Max=%A%
  5. set Min=%A%
  6. :loop
  7.   if %A% equ 0 goto next
  8.   if %Min% gtr %A% set Min=%A%
  9.   if %Max% lss %A% set Max=%A%
  10.   set /p A=
  11. goto loop
  12. :next
  13. set /a Result=Max-Min
  14. echo Max - Min = %Result%
  15. pause

Циклы типа While и Repeat приходится эмулировать использованием оператора goto. Цикл со счетчиком реализуется с помощью оператора For, однако его синтаксис совершенно отличается от синтаксиса For в Паскале (см. справку по командам Windows).

4.375
Your rating: Нет Average: 4.4 (8 votes)

Комментарии

" ... с bat-файлами MS-DOS,

" ... с bat-файлами MS-DOS, при помощи которых невозможно написать что-либо серьезное. Все, на что они способны, так это запускать внешние программы, работать с параметрами и обладают оператором goto, о вреде которого все из вас уже слышали..." - добрая презентация учебного материала, в пользе которого лектор курса "Информатка" пытался убедить своих студентовSurprised. Наверное не всё так однозначно.  Возможно, на эту тему тот самый лектор, более развёрнуто,  выскажется позже.  А как думают другие?

Не ясно, вопрос про goto или

Не ясно, вопрос про goto или про бат-файлы?