Сценарий windows cmd что это

Совершенствуйте свои сценарии Сценарии для командной строки - это файлы с простым текстом, которые интерпретируются командным процессором как наборы команд, подлежащие последовательному исполнению. История сценариев для командной строки началась на заре

Совершенствуйте свои сценарии Сценарии для командной строки — это файлы с простым текстом, которые интерпретируются командным процессором как наборы команд, подлежащие последовательному исполнению. История сценариев для командной строки началась на заре

Совершенствуйте свои сценарии

Сценарии для командной строки — это файлы с простым текстом, которые интерпретируются командным процессором как наборы команд, подлежащие последовательному исполнению. История сценариев для командной строки началась на заре 80-х — именно с этого времени и по сей день оболочка Command.com в MSDOS поддерживает исполнение сценариев посредством простых пакетных файлов. Выпущенный в 1993 году вместе с Windows NT другой командный процессор, Cmd.exe, также поддерживает язык макропрограммирования, подобный языку пакетных файлов Command.com. Несмотря на солидный возраст технологии, макропрограммирование в оболочке Cmd.exe все еще широко используется специалистами по ИT. Например, простой сценарий с командой For может превратить команду, которая сама по себе работает одновременно только с одним компьютером или пользователем в командной строке, в команду, которая пошагово проходит другой текстовый файл и исполняется для каждой строки в этом файле. Благодаря тому что сценарии для командной строки являются файлами с простым текстом, который представляет собой набор команд, их легко создавать и менять и они удобны для восприятия. Но простота макропрограммирования обманчива. Небрежно написанный сценарий для командного процессора может вызывать проблемы. Мне приходилось наблюдать, как сценарии для командного процессора при неправильных допущениях относительно вычислительной среды и операционной системы в лучшем случае работали некорректно, а в худшем — внезапно выполняли разрушительные действия на системах. Чтобы читатели могли избежать подобных проблем, я подготовил 10 советов для создания более надежных сценариев, которые могут работать во многих вычислительных средах.

1.

По возможности используйте переменные среды

Используя переменную в сценарии, мы заключаем имя переменной между знаками процента (%), а когда сценарий исполняется, знаки процента и текст между ними заменяется значением этой переменной. Применение переменных делает код сценария более универсальным, поэтому у него больше шансов успешно работать на разных компьютерах. Например, в сценарии для командного процессора не стоит жестко прописывать установочный каталог Windows. Вместо этого следует использовать переменную SystemRoot, которая всегда будет указывать на конкретный установочный каталог Windows. Так, команда

Echo %SystemRoot%

будет отображать содержимое SystemRoot (т. е. установочного каталога Windows). Я неоднократно видел сценарии, в которых для того, чтобы указать на установочный каталог Windows, использовали запись C:WINDOWS. Если Windows установлена не в C:WINDOWS (например, Windows 2000 и более ранние версии устанавливаются в WINNT), сценарий не будет работать корректно. Чтобы увидеть список переменных среды, следует ввести в командной строке команду Set. Некоторые переменные не появляются в списке, генерируемом командой Set, потому что они динамически генерируются Cmd.exe. В табл. 1 показан список этих переменных. Как и в случае с другими переменными среды, эти переменные заключаются в знаки процента. Например, следующая строка сценария будет отображать текущие время и дату:

Echo %DATE% %TIME%

2.

Не следует ожидать, что обычные пакетные файлы для Command.com будут так же хорошо работать в Cmd.exe

Те, кто привык писать пакетные файлы для платформ MS-DOS или Windows 9x/Me, должны иметь в виду, что в новейших версиях Windows некоторых команд не существует. Два самых распространенных примера — команды Choice и Deltree. Просмотрите свои старые пакетные файлы, чтобы убедиться, что они корректно работают в оболочке Cmd.exe. В табл. 2 приведено несколько возможных замен для Choice и Deltree. Большинство замен имеют синтаксис, отличный от синтаксиса команд, на место которых они предлагаются, поэтому придется соответствующим образом изменить сценарии.

3.

В оболочке Cmd.exe используйте расширение .cmd

Пакетным файлам Command.com необходимо расширение .bat. Оболочка Cmd.exe тоже может использовать расширение .bat, но в более мощном языке макропрограммирования Cmd.exe многие команды несовместимы с Command.com. Таким образом, .bat файл, написанный для Cmd.exe, может сбоить, если пользователь попытается исполнить его в Command.com (например, в Windows 98). Один из способов избежать этой проблемы состоит в использовании расширения .cmd для сценариев. Поскольку Command.com не распознает расширение .cmd, он просто не будет исполнять пакетный файл, если его имя оканчивается на .cmd.

4.

Убедитесь в том, что нужные исполняемые файлы доступны

Если ваш сценарий задействует программы, которые не являются частью стандартной установки операционной системы, необходимо позаботиться о том, чтобы все такие программы были доступны. Следует также задокументировать эти зависимости в сценариях. Я предлагаю для обеспечения доступности исполняемых файлов помещать их в один каталог со сценарием. Тогда для их запуска используется синтаксис

«% ~dp0exename» …

где exename — это имя исполняемого модуля, который требуется запустить. Синтаксис %~dp0 возвращает диск, путь и имя файла текущего сценария без кавычек. Заключение всей строки в кавычки гарантирует работоспособность сценария, даже если имя файла или каталога, в котором находится сценарий, содержат кавычки.

5.

Правильно используйте двойные кавычки

Похоже, двойные кавычки («) являются общим источником путаницы для тех, кто пишет сценарии. Двойные кавычки — это всего лишь способ идентифицировать содержащие пробелы аргументы командной строки. Например, правильная на первый взгляд командная строка

dir C:Program Files

на самом деле дает команде Dir два аргумента: C:Program и Files. Чтобы воплотить свое намерение передать команде один аргумент C:Program Files (включая пробел), мы должны заключить его в двойные кавычки:

dir «C:Program Files»

Символы кавычек не являются частью имени папки. Они сообщают команде Dir, что текст между ними является одним аргументом.

Сценарии для командного процессора также поддерживают параметры командной строки. Чтобы воспользоваться параметрами командной строки сценария, нужно задействовать запись %n (где n — число от 0 до 9). Эта запись называется заменяющим параметром (или просто параметром). Например, сценарий будет заменять параметр %1 первым аргументом командной строки, %2 — вторым аргументом и т. д. Помимо параметров от %1 до %9, %0 заменяется именем сценария, %* заменяется целой командной строкой сценария (исключая имя сценария). Я упоминаю здесь параметры командной строки потому, что, когда Cmd.exe заменяет параметры от %1 до %9 соответствующими аргументами командной строки, он оставляет двойные кавычки, если они есть в аргументе. Напрашивается очевидный вывод: параметр сценария всегда будет заключен в кавычки, если он содержит пробелы. На этом наблюдении основано несколько простых правил, аккуратно следуя которым можно практически полностью устранить проблемы кавычек.

  • Не используйте кавычки внутри параметров сценария (от %1 до %9), поскольку они уже могут содержать кавычки. Если необходимо задействовать параметр с командой If, используйте символы, отличные от кавычек (например, фигурные скобки), чтобы избежать синтаксической ошибки. Следующая строка будет работать правильно, даже если первый параметр (%1) содержит кавычки:

If {%1}=={} Goto :HELP

Исключение из этого правила составляет случай, когда мы используем синтаксис %~n, чтобы удалить кавычки параметра (см. следующее правило).

  • Не помещайте кавычки внутрь переменной среды. Наличие пробелов в переменных среды допускается, и кавычки при этом не нужны. Если нужно скопировать параметр в переменную, используйте синтаксис %~n (где n — число от 1 до 9), который возвращает параметр без кавычек. Например, строка

    Set DATAFILE=% ~1
    будет копировать первый параметр сценария (без кавычек) в переменную DATAFILE. Исключение составляет случай, когда вы создаете текст в кавычках, который будет передан в другую команду.

  • Не забывайте, когда это необходимо, помещать переменные среды в кавычки. Например, рассмотрите следующие строки сценария:

    Set TARGET=% ~2
    Copy %1 «%TARGET%»

Первая из этих строк копирует второй аргумент сценария в переменную TARGET, удаляя кавычки. Вторая строка синтаксически верна, потому что параметр %1 уже заключен в кавычки, если он содержит пробелы, а переменная TARGET должна иметь кавычки, потому что она может содержать пробелы.

6.

Применяйте команды Setlocal и Endlocal

Команда Setlocal копирует все переменные среды, а команда Endlocal восстанавливает все переменные со значениями, которые они имели перед запуском сценария. Endlocal также удаляет любые переменные, созданные сценарием. Использование обеих команд делает сценарий более самостоятельным и гарантирует, что сценарий «убирает за собой мусор» путем восстановления переменных среды в их оригинальные значения и удаления переменных, созданных сценарием.

Также можно использовать команду Setlocal Enableextensions, чтобы точно знать, что расширения команд включены. Расширения команд — это усовершенствования для группы внутренних команд Cmd.exe (например, If, For, Call), которые предоставляют дополнительные возможности по сравнению с командами Command.com, имеющими такие же имена. Расширения команд включены по умолчанию, но в тех редких случаях, когда они отключены, команда Setlocal Enableextensions гарантирует включение расширений команд. Чтобы получить более подробную информацию о расширениях команд, следует ввести в командной строке Cmd /?.

7.

Используйте при необходимости символ Escape

Cmd.exe использует символ каретки (^) как признак отмены специального значения зарезервированных символов командной оболочки. Например, амперсанд (&) является разделителем команд — он позволяет поместить несколько команд в одной строке. Если вы намерены использовать амперсанд в обычном, литературном смысле, то должны «аннулировать» его специальное значение, поместив перед ним символ каретки ^. Так, в строке

Echo The ^& character is
the command separator

символ ^ вынуждает командный процессор отменить обычную интерпретацию следующего за ним символа. Специальными символами являются символы ( ) < > ^ & |. Нет необходимости использовать признак отмены, если эти символы встречаются внутри строки, заключенной в кавычки.

8.

Не используйте команду Exit без ключа /b

Без ключа /b команда Exit закрывает текущую командную оболочку. Если кто-то запускает Cmd.exe и исполняет сценарий, который содержит команду Exit, текущая сессия командного процессора резко закроется. Команда Exit /b закрывает текущий сценарий, не закрывая текущую сессию командного процессора. Чтобы больше узнать о команде Exit, наберите в командной строке Exit /?.

9.

Используйте команду If Errorlevel с осторожностью

Команда If Errorlevel проверяет код завершения последней команды, исполнение которой окончено. Поведение сценария зависит от результата проверки кода завершения программы. Рассмотрите, например, следующий сценарий:

Myprogram
If Errorlevel 1 Goto :ERROR

Команда Goto в этих строках будет выполнена, только если Myprogram.exe возвращает код завершения больше или равный 1. Другими словами, «If Errorlevel n» не означает «если последний код завершения программы в точности равен n»; на самом деле это условие означает «если последний код завершения программы не меньше n». Учитывая такое поведение, следует проверять код завершения программы в порядке убывания (от самого большого к самому маленькому). Чтобы проверить конкретное значение кода завершения программы, используйте динамическую переменную ERRORLEVEL вместо команды If Errorlevel. Нужно иметь в виду, что команда If Errorlevel отличается от переменной ERRORLEVEL, стоящей в списке в табл. 1. Команда If Errorlevel обратно совместима с командой If Errorlevel из Command.com; переменная ERRORLEVEL доступна только в Cmd.exe.

10.

Учитывайте особенности команды Start

Команда Start запускает программу или команду в окне новой консоли. Однако, если попытаться запустить программу из папки, которая содержит пробелы (или если имя программы содержит пробелы), поведение команды Start может не соответствовать вашим ожиданиям. Например, следующая команда:

Start «C:Program FilesMicrosoft
OfficeOffice11Winword.exe»

не запускает Microsoft Word вопреки ожиданию. Вместо этого команда Start откроет новую сессию Cmd.exe, заголовком окна консоли которой будет заключенная в кавычки строка. Такое поведение объясняется тем, что команда Start использует первую строку в кавычках в ее командной строке как заголовок окна консоли.

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

Start «» «C:Program FilesMicrosoft
OfficeOffice11Winword.exe»

Всего не предусмотришь

Сценарии командного процессора Cmd.exe применяются весьма широко. Освоив приведенные в этой статье рекомендации, вы сможете создавать более надежные сценарии и избегать распространенных проблем.


Дополнительные материалы по написанию сценариев в online-доступе на сайте Windows IT Pro/RE

OneNote — полнофункциональная система хранения сценариев
http://www.osp.ru/text/302/3546232.html

Рекурсивная загрузка Web-узла целиком
http://www.osp.ru/text/302/3207223/

Программный доступ к информации о дисковых квотах
http://www.osp.ru/text/302/3177796.html

Организация печати данных из сценариев
http://www.osp.ru/text/302/3177769.html

Как написать сценарий, выдающий заметные предупреждения
http://www.osp.ru/text/302/3137821.html

Получение списка членов вложенных групп
http://www.osp.ru/text/302/3137821.html

Самодельный инструмент для инвентаризации аппаратных средств
http://www.osp.ru/text/302/2876185.html

Перенос и активация учетных записей пользователей
http://www.osp.ru/text/302/2863575.html

Получение функциональности с использованием управляющих компонентов
http://www.osp.ru/text/302/2863520.html

Извлечение информации из Web-страницы
http://www.osp.ru/text/302/2740759.html

Системные утилиты одной строкой
http://www.osp.ru/text/302/2740725.html


Таблица 1. Таблица 2.

В данной статье будут рассмотрены основы командной строки Windows, а именно:

  • Понятие командной строки;
  • Справочник по командам командной оболочки;
  • Последовательность событий при выполнение команды;
  • Создание сценариев командной строки;
  • Управление отображением текста и команд;
  • Команды для изучение системной информации;
  • Команды для использования реестра;
  • Управление системными службами;
  • Перезагрузка и выключение систем из командной строки;
  • Управление приложениями и  процессами из командной строки.

Содержание

  1. Понятие командной строки
  2. Краткий справочник по командам командной оболочки (Cmd.exe)
  3. Последовательность событий при выполнение команды
  4. Создание сценариев командной строки
  5. Управление отображением текста и команд
  6. Изучение системной информации
  7. Команды для использования реестра
  8. Управление системными службами
  9. Перезагрузка и выключение систем из командной строки
  10. Управление приложениями, процессами и производительностью

Понятие командной строки

Поддержка командной строки встроена в операционную систему Microsoft Windows и доступна через окно командной оболочки. Командная строка поддерживается во всех версиях Windows и служит для запуска встроенных команд, утилит и сценариев. Несмотря на мощь и гибкость командной строки, некоторые администраторы Windows никогда ее не используют. Если вам хватает графических средств администрирования, можно применять только их, щелкая мышью элементы пользовательского интерфейса.

Однако опытные администраторы Windows, квалифицированные специалисты по технической поддержке и «продвинутые» пользователи не могут обойтись без командной строки. Зная, как правильно применять командную строку, в частности, какие средства командной строки выбрать, как и когда их использовать, чтобы они работали эффективно, можно избежать многочисленных проблем и добиться четкого выполнения операций. Если вы занимаетесь поддержкой нескольких доменов или сетей, то для автоматизации ежедневных операций не только важно, но и необходимо иметь представление об экономящих время способах работы с командной строкой.

С каждой новой версией Windows командная строка совершенствовалась, а ее возможности расширялись. Командная строка претерпела значительные изменения, связанные не только с повышением производительности, но и с увеличением гибкости. Теперь с помощью командной строки Windows можно решать задачи, которые нельзя было решить в предыдущих версиях Windows.

Среду командной оболочки Windows запускают разными способами, в частности указывая параметры при запуске Cmd.exe или используя собственный стартовый файл, хранящийся в каталоге %SystemRoot%System32.

Кроме того, командная строка может работать в пакетном режиме для выполнения набора команд. В пакетном режиме командная строка считывает и выполняет команды одну за другой.

Работая с командной строкой Windows, Вы должны понимать, откуда берутся используемые Вами команды. «Родные» команды (встроенные в операционную систему) бывают двух видов:

  • Внутренние – существуют внутри командной оболочки, у них нет отдельных исполняемых файлов;
  • Внешние — реализованы в отдельных исполняемых файлах, которые обычно хранятся в каталоге %SystemRoot% System32.

Краткий справочник по командам командной оболочки (Cmd.exe)

  • assoc — выводит или изменяет сопоставления (associations) типов файлов;
  • break — задает точки останова при отладке
  • call — вызывает из сценария процедуру или другой сценарий;
  • cd (chdir) — показывает имя текущего каталога или выполняет смену текущего каталога;
  • cls — очищает окно командной строки и буфер экрана;
  • color — задает цвета текста и фона окна командной оболочки;
  • сору — копирует файлы или выполняет конкатенацию файлов;
  • date — показывает или устанавливает текущую дату;
  • del (erase) — удаляет заданный файл, группу файлов или каталог;
  • dir — показывает список подкаталогов и файлов в текущем или заданном каталоге;
  • echo — выводит текст в окно командной строки или задает, надо ли отображать команды на экране (on|off);
  • endlocal — отмечает конец локализации (локальной области видимости) переменных;
  • exit — выход из оболочки командной строки;
  • for — выполняет заданную команду для каждого файла в наборе;
  • ftype выводит или изменяет текущие типы файлов в сопоставлениях расширений файлов с программами;
  • goto — указывает, что интерпретатор команд должен перейти на строку с заданной меткой в пакетном сценарии;
  • if — выполняет команды по условию;
  • md (mkdir) — создает подкаталог в текущем или заданном каталоге;
  • move — перемещает файл или группу файлов из текущего или заданного исходного каталога в указанный каталог. Также может переименовывать каталог;
  • path — показывает или задает путь к командам, используемый операционной системой при поиске исполняемых файлов и сценариев;
  • pause — останавливает выполнение пакетного файла и ожидает ввода с клавиатуры;
  • popd — делает текущим каталог, имя которого было сохранено командой PUSHD;
  • prompt — указывает, какой текст должен показываться в строке приглашения;
  • pushd — сохраняет имя текущего каталога и при необходимости делает текущим заданный каталог;
  • rd (rmdir) — удаляет каталог или каталог вместе с его подкаталогами;
  • rem — помечает комментарии в пакетном сценарии или Config.nt;
  • ren (rename) — Переименовывает файл или группу файлов;
  • set — показывает текущие переменные окружения или задает временные переменные для текущей командной оболочки;
  • setlocal — отмечает начало локализации (локальной области видимости) переменных в пакетных сценариях;
  • shift — сдвигает позицию замещаемых параметров в пакетных сценариях;
  • start — запускает заданную программу или команду в отдельном окне;
  • time — показывает или устанавливает системное время;
  • title — задает заголовок окна командной оболочки;
  • type — показывает содержимое текстового файла;
  • verify — включает режим проверки файлов после записи на диск;
  • vol — показывает метку и серийный номер дискового тома.

Синтаксис любой внутренней команды (и большинства внешних) можно получить, введя в командной строке имя команды и /?, например:

   
   copy /?

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

Последовательность событий при выполнение команды

  • Командная оболочка заменяет любые переменные, введенные в тексте команд, их текущими — значениями;
  • Если введена группа или цепочка из нескольких команд, строка разбивается на отдельные команды, которые в свою очередь разбиваются на имя и аргументы команды. Далее команды обрабатываются по отдельности;
  • Если в имени команды указан путь, командная оболочка ищет команду по этому пути. Если в указанном каталоге такой команды нет, командная оболочка возвращает ошибку;
  • Если в имени команды не задан путь, командная оболочка сначала пытается разрешить имя команды на внутреннем уровне. Если найдена внутренняя команда с таким именем, значит, вызвана внутренняя команда, которую сразу же можно выполнить. Если внутренней команды с таким именем нет, командная оболочка сначала ищет исполняемый файл команды в текущем каталоге, а затем в каталогах, перечне в переменной окружения PATH. Если файла команды нет ни в одном из этих каталогов, командная оболочка возвращает ошибку;
  • Если команда найдена, она выполняется с заданными аргументами и при необходимости ввод считывается из источника, указанного в этих аргументах. Вывод и ошибки команд показываются в окне командной строки или направляются заданному приемнику вывода и ошибок.
  • Как видите, на выполнение команд влияют многие факторы, в том числе пути к командам, перенаправление ввода-вывода, группирование или создание цепочек команд.

При работе с командной оболочкой Вы, вероятно, запускали ее, открывая меню Start (Пуск) и выбирая Programs (Программы) или All Programs (Все программы), затем Accessories (Стандартные) и Command Prompt (Командная строка). Другие способы запуска командной строки — диалоговое окно Run (Запуск программы) или ввод cmd в другом, уже открытом окне командной оболочки. Эти способы позволяют при запуске командной строки указывать аргументы: ключи, управляющие работой командной строки, и параметры, инициирующие выполнение дополнительных команд. Например, можно запустить командную оболочку в «молчаливом» режиме (т. е. отключить эхо-вывод) командой cmd /q или сделать так, чтобы командная оболочка выполнила заданную команду и завершила свою работу, — для этого нужно ввести cmd /с, а затем текст команды в кавычках.

В следующем примере командная оболочка запускается, выполняет команду ipconfig с выводом результатов в файл и завершается:

   
   cmd /c "ipconfig > c:ipconfig.txt"

Создание сценариев командной строки

Сценарии командной строки — текстовые файлы с командами, которые вы хотите выполнить. Это те же команды, которые обычно вводятся в командной оболочке Windows. Однако вместо того чтобы вводить команды каждый раз, когда они понадобятся, можно создать соответствующий сценарий и упростить себе жизнь.

Поскольку сценарии состоят из стандартных текстовых символов, их можно создавать и редактировать в любом стандартном текстовом редакторе, скажем, в Notepad (блокнот). Вводя команды, убедитесь, что каждая команда или группа команд, которые должны выполняться совместно, разметаются с новой строки. Это обеспечит их корректное выполнение. Закончив создание сценария командной строки, сохраните файл сценария с расширением .bat или .cmd. Оба расширения работают одинаково. Например, если вам надо создать сценарий для вывода имени системы, версии Windows и конфигурации IP, включите в файл SysInfo.bat или SysInfo.cmd следующие три команды:

  
  hostname
  ver
  ipconfig -all

Управление отображением текста и команд

Команда ECHO служит двум целям: для записи текста в вывод (например, в окно командной оболочки или текстовый файл) и для включения/выключения эхо-отображения команд. Обычно при выполнении команд сценария сами команды и вывод этих команд отображаются в консольном окне. Это называется эхо-отображением команд (comand echoing).

Чтобы использовать команду ECHO для отображения текста, введите echo и текст, который надо вывести:

  
  echo The system host name Is: hostname

Чтобы с помощью ECHO управлять эхо-отображением команд, введите echo off или echo on, например:

  
  echo off
  echo The system host name is:
  hostname

Чтобы направить вывод в файл, а не в окно командной оболочки, используйте перенаправление вывода, например:

Курс по SQL для начинающих

  
  echo off
  echo The system host name is: > current.txt
  hostname » current.txt

Теперь посмотрим, как подавляется эхо-отображение команд. Запустите командную оболочку, введите echo off, затем другие команды. Вы увидите, что приглашение командной строки больше не выводится. Вместо него появляется только то, что набирается в консольном окне, и вывод выполненных команд. В сценариях команда ECHO OFF отключает эхо-отображение команд и приглашение командной строки. Добавляя в свои сценарии команду ECHO OFF, вы предотвращаете загромождение окна командной оболочки или файла текстом команд, если Вас интересует лишь вывод от этих команд.

Изучение системной информации

Часто при работе с компьютером пользователя или удаленным сервером возникает необходимость в получении базовой информации о системе вроде имени зарегистрированного в ней пользователя, текущего системного времени или местоположения определенного файла. Команды, которые позволяют собрать основную информацию о системе, включают:

  • NOW — отображает текущую системную дату и время в 24-часовом формате, например Sal May 9 12:30:45 2003. Доступна только в Windows Server 2003 Resource Kit;
  • WHOAMI — сообщает имя пользователя, зарегистрированного в системе на данный момент, например adatumadmi-nistrator;
  • WHERE — выполняет поиск файлов по шаблону поиска (search pattern) и возвращает список совпавших результатов.

Чтобы использовать NOW или WHOAMI, просто введите команду в окне командной оболочки и нажмите Enter. Наиболее распространенный синтаксис для WHERE выглядит так:

  
  where /r базовый_каталог_имя_файла

Здесь параметр /r указан для рекурсивного поиска, начиная от указанного каталога (базовый_каталог) и включая все его подкаталоги, а имя_файла — полное или частичное имя искомого файла, которое может включать символы подстановки (wildcards): знак ? заменяет один символ, а знак * — группу символов, например data???.txt или data*.*. В следующем примере в каталоге С: и всех его подкаталогах выполняется поиск всех текстовых файлов, имена которых начинаются с data.

   
  where /r C: data*.txt

Также можно найти файлы всех типов, имена которых начинаются с data:

   
  where /r C: data*.*

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

  • DRIVERQUERY — выводит список всех установленных драйверов устройств и их свойства, в том числе имя модуля (module name), отображаемое имя (display name), тип драйвера и дату сборки (driver link date). В режиме отображения всей информации (/V) сообщается статус (status) и состояние (state) драйвера, режим запуска, сведения об использовании памяти и путь в файловой системе. Параметр /V также включает вывод детальной информации обо всех неподписанных драйверах.
  • SYSTEMINFO — выдает подробную информацию о конфигурации системы, в том числе сведения о версии, типе и изготовителе операционной системы, процессоре, версии BIOS, объеме памяти, региональных стандартах, часовом поясе и конфигурации сетевого адаптера.
  • NLSINFO — отображает подробную информацию о региональных стандартах, включая язык по умолчанию (default language), кодовую страницу Windows, форматы отображения времени и чисел, часовой пояс и установленные кодовые страницы. Эта команда доступна лишь в Windows Server 2003 Resource Kit.

Чтобы использовать эти команды на локальном компьютере, просто введите имя нужной команды в окне командной оболочки и нажмите Enter.

Команды для использования реестра

Реестр Windows хранит конфигурационную информацию операционной системы, приложений, пользователей и оборудования. Эти данные содержатся в разделах (keys) и параметрах (values) реестра, которые размещаются в определенном корневом разделе (root key), который контролирует, как и когда используются разделы и параметры.

Если Вы знаете пути к разделам и понимаете допустимые типы данных в разделах, то можете использовать команду REG для просмотра разделов и параметров и манипуляций над ними самыми разнообразными способами. REG поддерживает несколько подкоманд:

  • REG add — добавляет в реестр новый подраздел или элемент;
  • REG delete — удаляет из реестра подраздел или элемент;
  • REG query — выводит список элементов раздела и имена подразделов (если они есть);
  • REG compare — сравнивает подразделы или элементы реестра;
  • REG сору — копирует элемент реестра по указанному пути раздела на локальной или удаленной системе;
  • REG restore — записывает в реестр ранее сохраненные подразделы, элементы и параметры;
  • REG save — сохраняет копию указанных подразделов, элементов и параметров реестра в файл.

Управление системными службами

Службы обеспечивают ключевые функции рабочих станций и серверов. Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (service controller command) SC, имеющая набор подкоманд, ниже описывается лишь их часть:

  • SC config — настройка учетных записей регистрации и запуска служб;
  • SC query — вывод списка всех служб, настроенных на компьютере;
  • SC qc — отображение конфигурации определенной службы;
  • SC start — запуск служб;
  • SC stop — остановка служб;
  • SC pause — приостановка работы служб;
  • SC continue — возобновление работы служб;
  • SC failure — задание действий, выполняемых при сбое службы;
  • SC qfailure — просмотр действий, выполняемых при сбое службы.

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

  
  sc ИмяСервера Подкоманда

Перезагрузка и выключение систем из командной строки

Системы нередко приходится перезагружать или выключать. Один из способов — использовать для этого утилиту Shutdown, которая позволяет работать с локальной и удаленными системами. Другой способ управлять выключением или перезагрузкой системы — назначить задание для выключения. Здесь можно использовать Schtasks, чтобы указать время выключения, или создать сценарий со списком команд выключения для индивидуальных систем.

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

Выключение локальной системы:

  
  shutdown /s /t ЗадержкаВыключения /1 /f

Перезагрузка локальной системы:

  
  shutdown /r /t ЗадержкаВыключения /1 /f

Управление приложениями, процессами и производительностью

Всякий раз, когда операционная система или пользователь запускает службу, приложение или команду, Microsoft Windows запускает один или более процессов для управления соответствующей программой. Несколько утилит командной строки упростят вам мониторинг программ и управление ими. К этим утилитам относятся:

  • Pmon (Process Resource Manager) — показывает статистические данные по производительности, включая использование памяти и процессора, а также список всех процессов, выполняемых в локальной системе. Позволяет получать детальные «снимки» задействованных ресурсов и выполняемых процессов. Pmon поставляется с Windows Resource Kit;
  • Tasklist (Task List) — перечисляет все выполняемые процессы по имени и идентификатору процесса, сообщает информацию о сеансе пользователя и занимаемой памяти;
  • Taskkill (Task Kill) — останавливает выполнение процесса, заданного по имени или идентификатору. С помощью фильтров можно останавливать процессы в зависимости от их состояния, номера сеанса, процессорного времени, занимаемой памяти, имени пользователя и других параметров.

Вот в принципе все, что я хотел рассказать об основах командной строки Windows.

If you have every used the Command Line, or CMD, interface in Windows, you probably have some idea of the powerful things it can do. Creating your own CMD scripts, you can do even more, but faster.

A CMD script does the same thing as if you typed commands into the CMD window. If you want to do something on a regular basis, such as telling Windows to turn off your computer after an hour, you can write a script and then you can activate the script whenever you want to run it.

Understanding CMD and Written Commands

In the early days of personal computing almost everything was done by typing command_s into a command line interface. If you wanted to open a program, you had to type the name of the program into the command line. Today, you can simply click or touch an icon on your screen to perform most actions. But Windows still accepts type-written commands in the CMD utility. You can write commands_ to open programs, add or change account permissions, back up files or get information about your computer using the CMD window.

Understanding CMD Scripts

The Command Prompt utility in Windows can be opened at any time, simply by typing «cmd» in the Windows Start menu. Here, you can type all sorts of commands to open programs, change settings and make tweaks to how Windows and its programs perform. In Microsoft’s long history of operating systems, CMD i_s a relative newcomer. In MS-DOS, before Windows was released, when you wanted to run a script, you would save it as a .bat file. While you can still save files with that extension today, most people use the .cmd extension._

Using a Script CMD to Open Notepad

To create and save a CMD switch, it’s best to use a basic text editor. Using a word processor like Microsoft Word makes saving the file a hassle. Notepad is much easier to use. So to demonstrate how CMD works, let’s open use it to open Notepad.

  1. Type CMD in the Windows Start menu and press Enter to open CMD.exe.
  2. Change the directory from your current username folder to the base directory by typing «cd» and pressing Enter. It should now read «C:>» before the blinking cursor.
  3. Type the following line and press Enter: start «c:windowssystem32» notepad.exe

As soon as you press Enter, you will see Notepad open. The command you entered has told Windows to start the notepad.exe program, which is located in the system32 folder, which is inside the Windows folder, on the C: drive. CMD commands are not case-sensitive so you can use lowercase or uppercase letters interchangeably.

Creating Your First Script CMD File

Now that Notepad is open, create your first CMD script file by typing the same line you used in the CMD window into notepad: start «c:windowssystem32» notepad.exe

Save the batch file to your desktop by selecting «Save As» from the File menu. Name the file «firstscript.cmd» and click «Save.» Notepad script commands must be saved with the .cmd extension, rather than the default .txt extension.

Double-click the new CMD file on your desktop. You will see the CMD window open for a fraction of a second and then close as Notepad is launched.

This is hardly a useful script, since a desktop shortcut does the same thing. To create something more useful, let’s edit the file so that it creates a new text file on your desktop listing all of your programs.

Using Echo and Echo Off

While the CMD window wasn’t open long enough to see it, by default it will always display the text that was entered in the CMD file when it runs. For longer scripts, this can be a nuisance, so it’s generally good form to turn this off by using the Echo Off command in the first line of the CMD file. By itself, Echo Off disables the display of any text that follows it. To make the Echo Off command apply to itself, put an @ symbol in front of it. Thus, your two-line CMD script would be:

@echo off

start «c:windowssystem32» notepad.exe

Creating a Text File Script

This CMD script will list all the files you have in your Program Files folder and put that list in a new text file.

  1. Open Notepad. Type «@echo off«in the first line and press Enter.
  2. In the second line, type: dir «C:Program Files» > list_of_files.txt
  3. Select «Save As» from the File menu and save the file as «program-list-script.cmd.»
  4. Double-click the new text file on your desktop to see the list of files and folders.

The text file will appear in the same folder where the script file itself is. So if the script file is on your desktop, the list-of-files.txt file will also appear on your desktop.

If you want to change the folder where the text file is placed, you can specify its own folder in the script. For example, if you want it to be placed in your Documents folder, use: dir «C:Program Files» > C:UsersDavidDocumentslist_of_files.txt

Creating a Systems Information Script

If you want to use a script to give you needed information, it’s not always necessary to produce a text document with a script. You can have the information posted directly in the CMD window.

The example script below will give you basic information about your computer, including the operating system and version number, the BIOS version, the total physical memory and your computer’s network address. To use the script, type or copy the lines below into a new Notepad file and save it with the .cmd file extension, such as «my_computer_info.cmd.»

In this example, ECHO OFF is used to prevent the CMD window from displaying the script.

The ECHO command is used to display specific text, as well as some equal signs (===) as lines to organize the information in sections.

To insert a comment for your own use — without it affecting the script or appearing in the CMD window — type two colons first. Anything in the same line following » :: « will be commented out from the script.

The PAUSE command directs the CMD program to stay open. Pressing any key on your keyboard will close the window.

@ECHO OFF

:: This CMD script provides you with your operating system, hardware and network information.

TITLE My System Info

ECHO Please wait… Gathering system information.

ECHO =========================

ECHO OPERATING SYSTEM

systeminfo | findstr /c:»OS Name»

systeminfo | findstr /c:»OS Version»

ECHO =========================

ECHO BIOS

systeminfo | findstr /c:»System Type»

ECHO =========================

ECHO MEMORY

systeminfo | findstr /c:»Total Physical Memory»

ECHO =========================

ECHO CPU

wmic cpu get name

ECHO =========================

ECHO NETWORK ADDRESS

ipconfig | findstr IPv4

ipconfig | findstr IPv6

PAUSE

Using Scripts to Shut Down Your Computer

Normally, when you shut down your computer, it happens instantaneously. Suppose, however, that you’re listening to an audiobook or watching a training video — and you know that you will fall asleep after an hour. You can use a CMD script to tell your computer to shut itself down, after a specified period of time, using the shutdown command.

When you use the shutdown command, you need to include two additional switches, or subcommands. The first tells the computer to either shutdown or restart. You can use either -s or — r. The second tells the computer how many seconds to wait before performing the command. For this you use -t, followed by the number of seconds.

To shutdown the computer in one second, use: shutdown -s -t 01

To restart the computer in eight seconds, use: shutdown -r -t 08

To shutdown the computer in two hours use: shutdown -s -t 7200

Backing Up Files With a CMD Script

If you find it tedious to back up your files to a second storage device, using a CMD script makes the process a breeze. For this, use the Robocopy command. For example, if you want to back up all of the files in your Documents folder onto a removable storage device, you can write the command in a CMD file and then — at the end of the day — simply double click the file to activate it.

The Robocopy command needs to know, first — which folder you want to copy and, second — where you want the copy placed. Both the source and destination need to be in quotation marks.

If you’re not certain what your drive letters are, open File Explorer and click on «My Computer.»

For example, if your User name is MyName, your Documents folder is in your C: drive and your Backup folder is in a removable storage D: drive, then the command would be:

robocopy D:UsersMyNameDocuments F:Backup /XA:H /W:0 /R:1 > F:Backupbackup.log

This example is a bit more complicated, since Robocopy offers you a lot of options.

D:UsersMyNameDocuments: the folder you want to back up.

F:Backup: the location of your Backup folder.

/XA:H: ignores hidden files.

/W:0: waits zero seconds between retries, instead of the default 30 seconds.

/R:1: retry only once if the file is locked.

> F:Backupbackup.log: create a backup log placed in the Backup folder.

Note that because this is a mirror backup, if you delete files from the source folder, they will be deleted from the Backup folder the next time you use the script. It would be a good idea to explore additional switches available for Robocopy, so that you ensure that you backup your files the way that works best for you.

If you have every used the Command Line, or CMD, interface in Windows, you probably have some idea of the powerful things it can do. Creating your own CMD scripts, you can do even more, but faster.

A CMD script does the same thing as if you typed commands into the CMD window. If you want to do something on a regular basis, such as telling Windows to turn off your computer after an hour, you can write a script and then you can activate the script whenever you want to run it.

Understanding CMD and Written Commands

In the early days of personal computing almost everything was done by typing command_s into a command line interface. If you wanted to open a program, you had to type the name of the program into the command line. Today, you can simply click or touch an icon on your screen to perform most actions. But Windows still accepts type-written commands in the CMD utility. You can write commands_ to open programs, add or change account permissions, back up files or get information about your computer using the CMD window.

Understanding CMD Scripts

The Command Prompt utility in Windows can be opened at any time, simply by typing «cmd» in the Windows Start menu. Here, you can type all sorts of commands to open programs, change settings and make tweaks to how Windows and its programs perform. In Microsoft’s long history of operating systems, CMD i_s a relative newcomer. In MS-DOS, before Windows was released, when you wanted to run a script, you would save it as a .bat file. While you can still save files with that extension today, most people use the .cmd extension._

Using a Script CMD to Open Notepad

To create and save a CMD switch, it’s best to use a basic text editor. Using a word processor like Microsoft Word makes saving the file a hassle. Notepad is much easier to use. So to demonstrate how CMD works, let’s open use it to open Notepad.

  1. Type CMD in the Windows Start menu and press Enter to open CMD.exe.
  2. Change the directory from your current username folder to the base directory by typing «cd» and pressing Enter. It should now read «C:>» before the blinking cursor.
  3. Type the following line and press Enter: start «c:windowssystem32» notepad.exe

As soon as you press Enter, you will see Notepad open. The command you entered has told Windows to start the notepad.exe program, which is located in the system32 folder, which is inside the Windows folder, on the C: drive. CMD commands are not case-sensitive so you can use lowercase or uppercase letters interchangeably.

Creating Your First Script CMD File

Now that Notepad is open, create your first CMD script file by typing the same line you used in the CMD window into notepad: start «c:windowssystem32» notepad.exe

Save the batch file to your desktop by selecting «Save As» from the File menu. Name the file «firstscript.cmd» and click «Save.» Notepad script commands must be saved with the .cmd extension, rather than the default .txt extension.

Double-click the new CMD file on your desktop. You will see the CMD window open for a fraction of a second and then close as Notepad is launched.

This is hardly a useful script, since a desktop shortcut does the same thing. To create something more useful, let’s edit the file so that it creates a new text file on your desktop listing all of your programs.

Using Echo and Echo Off

While the CMD window wasn’t open long enough to see it, by default it will always display the text that was entered in the CMD file when it runs. For longer scripts, this can be a nuisance, so it’s generally good form to turn this off by using the Echo Off command in the first line of the CMD file. By itself, Echo Off disables the display of any text that follows it. To make the Echo Off command apply to itself, put an @ symbol in front of it. Thus, your two-line CMD script would be:

@echo off

start «c:windowssystem32» notepad.exe

Creating a Text File Script

This CMD script will list all the files you have in your Program Files folder and put that list in a new text file.

  1. Open Notepad. Type «@echo off«in the first line and press Enter.
  2. In the second line, type: dir «C:Program Files» > list_of_files.txt
  3. Select «Save As» from the File menu and save the file as «program-list-script.cmd.»
  4. Double-click the new text file on your desktop to see the list of files and folders.

The text file will appear in the same folder where the script file itself is. So if the script file is on your desktop, the list-of-files.txt file will also appear on your desktop.

If you want to change the folder where the text file is placed, you can specify its own folder in the script. For example, if you want it to be placed in your Documents folder, use: dir «C:Program Files» > C:UsersDavidDocumentslist_of_files.txt

Creating a Systems Information Script

If you want to use a script to give you needed information, it’s not always necessary to produce a text document with a script. You can have the information posted directly in the CMD window.

The example script below will give you basic information about your computer, including the operating system and version number, the BIOS version, the total physical memory and your computer’s network address. To use the script, type or copy the lines below into a new Notepad file and save it with the .cmd file extension, such as «my_computer_info.cmd.»

In this example, ECHO OFF is used to prevent the CMD window from displaying the script.

The ECHO command is used to display specific text, as well as some equal signs (===) as lines to organize the information in sections.

To insert a comment for your own use — without it affecting the script or appearing in the CMD window — type two colons first. Anything in the same line following » :: « will be commented out from the script.

The PAUSE command directs the CMD program to stay open. Pressing any key on your keyboard will close the window.

@ECHO OFF

:: This CMD script provides you with your operating system, hardware and network information.

TITLE My System Info

ECHO Please wait… Gathering system information.

ECHO =========================

ECHO OPERATING SYSTEM

systeminfo | findstr /c:»OS Name»

systeminfo | findstr /c:»OS Version»

ECHO =========================

ECHO BIOS

systeminfo | findstr /c:»System Type»

ECHO =========================

ECHO MEMORY

systeminfo | findstr /c:»Total Physical Memory»

ECHO =========================

ECHO CPU

wmic cpu get name

ECHO =========================

ECHO NETWORK ADDRESS

ipconfig | findstr IPv4

ipconfig | findstr IPv6

PAUSE

Using Scripts to Shut Down Your Computer

Normally, when you shut down your computer, it happens instantaneously. Suppose, however, that you’re listening to an audiobook or watching a training video — and you know that you will fall asleep after an hour. You can use a CMD script to tell your computer to shut itself down, after a specified period of time, using the shutdown command.

When you use the shutdown command, you need to include two additional switches, or subcommands. The first tells the computer to either shutdown or restart. You can use either -s or — r. The second tells the computer how many seconds to wait before performing the command. For this you use -t, followed by the number of seconds.

To shutdown the computer in one second, use: shutdown -s -t 01

To restart the computer in eight seconds, use: shutdown -r -t 08

To shutdown the computer in two hours use: shutdown -s -t 7200

Backing Up Files With a CMD Script

If you find it tedious to back up your files to a second storage device, using a CMD script makes the process a breeze. For this, use the Robocopy command. For example, if you want to back up all of the files in your Documents folder onto a removable storage device, you can write the command in a CMD file and then — at the end of the day — simply double click the file to activate it.

The Robocopy command needs to know, first — which folder you want to copy and, second — where you want the copy placed. Both the source and destination need to be in quotation marks.

If you’re not certain what your drive letters are, open File Explorer and click on «My Computer.»

For example, if your User name is MyName, your Documents folder is in your C: drive and your Backup folder is in a removable storage D: drive, then the command would be:

robocopy D:UsersMyNameDocuments F:Backup /XA:H /W:0 /R:1 > F:Backupbackup.log

This example is a bit more complicated, since Robocopy offers you a lot of options.

D:UsersMyNameDocuments: the folder you want to back up.

F:Backup: the location of your Backup folder.

/XA:H: ignores hidden files.

/W:0: waits zero seconds between retries, instead of the default 30 seconds.

/R:1: retry only once if the file is locked.

> F:Backupbackup.log: create a backup log placed in the Backup folder.

Note that because this is a mirror backup, if you delete files from the source folder, they will be deleted from the Backup folder the next time you use the script. It would be a good idea to explore additional switches available for Robocopy, so that you ensure that you backup your files the way that works best for you.

Общие сведения о командном процессоре Windows.
Использование переменных в командных файлах.
Передача параметров командному файлу.
Переходы и метки.
Примеры командных файлов:
    — Своя команда для создания новых файлов.
    — Присвоение съемному диску одной и той же буквы.
    — Создание архива, имя которого содержит дату и время.
    — Выполнение только в заданный интервал времени.
    — Пример создания архива каталога пользователя.
    — Изменение даты и времени для файлов и папок.
    — Выполнение команд по расписанию.
    — Запуск и остановка служб Windows в командной строке.
    — Выдача на экран значения ERRORLEVEL.
    — Диалог с пользователем.
    — Задержки в командных файлах.
    — Определение доступности IP-адреса.
    — Определение текущей версии Windows.
    — Поиск в локальной сети компьютеров с запущенным приложением.
    — Поиск компьютеров с запущенным приложением по списку на основе сетевого окружения.
    — Выключение компьютеров по списку, созданному на основе сетевого окружения.
    — Поиск в локальной сети включенных компьютеров.
    — Работа с дисками, файлами и каталогами.
    — Работа с графическими приложениями из командной строки.
    — Перекодировка текстовых файлов .
Часто встречающиеся ошибки при написании командных файлов.
Использование .bat и .cmd в сценариях регистрации пользователей.

Общие сведения о командном процессоре Windows.

    Командные файлы (скрипты, сценарии, батники) — это обычные текстовые файлы с расширением .bat или .cmd, строки которых представляют собой специальные команды командного процессора (интерпретатора команд ) и/или имена исполняемых файлов. Командный процессор – это специальная программа, являющаяся обязательным элементом почти любой операционной системы, главным назначением которого, является предоставление пользователю средства для выполнения определенных программ без их компиляции и создания исполняемых файлов. Для операционных систем DOS и Windows9X в качестве интерпретатора команд использовался командный процессор command.com, для всех остальных ОС семейства Windows ( NT/2k/XP/Vista/7/8 и старше) — cmd.exe. Несмотря на непрерывное совершенствование средств создания и выполнения сценариев с использованием объектно-ориентированных языков, обычная командная строка и простые командные файлы, по-прежнему остаются основным инструментом для выполнения рутинных действий, диагностики сетевых проблем, автоматизации процессов резервного копирования и т.п. При всех недостатках реализации командного процессора в Windows, достойной альтернативы ему нет, и очевидно в ближайшем будущем, не будет.

    Строки командных файлов могут содержать специфические команды самого
процессора команд (FOR, ECHO, REM и т.п.) или имена исполняемых модулей
(net.exe, regedit.exe, sc.exe) Командный процессор может быть запущен в интерактивном режиме через Пуск — Выполнить — CMD.EXE. В данном режиме, вы увидите окно консоли с приглашением к вводу команд. Возможный список большинства консольных команд можно получить введя:

HELP

Справочную информацию по конкретной команде можно получить, указав ее название в качестве параметра команды HELP:

HELP Имя команды

Если вы работаете в русифицированной версии Windows, то учтите, что в среде командного процессора символы национального алфавита используются в DOS-кодировке. Для переключения между кодовыми страницами Windows и DOS используется команда

CHCP номер страницы

CHCP 866 — использовать кодовую страницу 866 (DOS)

CHCP 1251 — использовать кодовую страницу 1251 (WINDOWS)

Для просмотра и редактирования командных файлов, содержащих символы русского алфавита нужно использовать редактор с поддержкой DOS-кодировки. Если вы используете стандартное приложение «Блокнот» (notepad.exe), то для правильного
отображения символов русского алфавита нужно выбрать шрифт Terminal, с
помощью меню Правка — Шрифт…

Внешний вид окна CMD.EXE (консоли Windows) можно изменить с помощью команды

COLOR

В качестве аргументов для команды используются 2 шестнадцатеричные цифры, задающие цвет фона и цвет символа.

COLOR F0 — черные символы на белом фоне.

COLOR 0E — светло-желтые символы на черном фоне.

HELP COLOR — подсказка для команды COLOR.

Работа с командным процессором предполагает использование двух устройств — устройства ввода (клавиатуры) и устройства вывода (дисплей). Однако, имеется возможность изменить стандартно используемые устройства ввода-вывода с помощью специальных символов — символов перенаправления

> — перенаправление вывода

< — перенаправление ввода

Для вывода справки не на экран а, например, в файл с именем help.txt, можно использовать следующую команду:

HELP > help.txt

При выполнении данной команды, в текущем каталоге будет создан файл с именем help.txt, содержимым которого будет результат вывода команды HELP. Если файл help.txt существовал на момент выполнения команды, его содержимое будет перезаписано. Для того, чтобы дописать данные в конец существующего файла, используют удвоение символа перенаправления вывода — «>>»

Пример:

HELP GOTO > myhelp.txt — в файл myhelp.txt будет выдана справка по использованию команду GOTO

HELP COLOR >> myhelp.txt — в конец файла myhelp.txt будет дописана справка по использованию команды COLOR

Простейший пример перенаправления ввода:

cmd.exe < commands.txt
— командный процессор не будет ожидать ввода команд с клавиатуры, а считает их из файла commands.txt

   При запуске командного процессора можно указать конкретную команду в качестве аргумента командной строки:

cmd.exe /C HELP FOR — выполнить команду HELP FOR и завершиться (ключ /C)

cmd.exe /K HELP FOR — выполнить команду HELP FOR и перейти в режим ожидания дальнейшего ввода команд (ключ /K)

Подробную справку по использованию cmd.exe можно получить, введя в качестве аргумента ключ /?

cmd.exe /?

Кроме символов перенаправления ввода-вывода в командной строке могут
использоваться символы объединения команд — && и ||

cmd.exe /C «HELP IF > nul» && Echo HELP Executed || Echo HELP Not Executed
— выполнить команду HELP IF и при успешном результате выполнить
команду Echo HELP Executed, а при неуспешном — Echo HELP Not Executed.
Команды, объединяемые для
выполнения с помощью конструкции && , не нужно заключать в
двойные кавычки. Выполнение строки

cmd.exe /C «HELP IF > nul» && Echo HELP Executed || Echo HELP Not Executed

завершится сообщением HELP Executed, а выполнение

cmd.exe /C «HELP uIF > nul» && Echo HELP Executed || Echo HELP Not Executed

где неверно задан аргумент команды HELP ( uIF ), завершится сообщением
HELP Not Executed

Файлы с расширением .bat или .cmd в среде Windows стандартно открываются
командным процессором аналогично примеру, где список команд считывается не с
устройства ввода, а из текстового файла.

Использование переменных в командных файлах.

   Существует такое понятие, как переменные окружения
(environments)
— это переменные, значения которых характеризуют среду,
в которой выполняются команда или пакетный файл. Иногда их называют
переменными среды. Принимаемые значения этих переменных формируются при
загрузке, регистрации пользователя в системе, старте или завершении
некоторых приложений, и, кроме того, могут быть заданы с помощью специальной
команды SET

SET переменная=строка

переменная — имя переменной среды.

строка — строка символов, присваиваемая указанной
переменной.

Например, командная строка

SET myname=Vasya

создает переменную myname, принимающую значение Vasya.

Значение, присвоенное какой-либо переменной, доступно для обработки в
командных
файлах, при использовании ее имени, заключенного в знаки
процента — % . Например
команда выдачи текста на дисплей ECHO в виде:

ECHO date — выведет на экран слово «date»,
а команда

ECHO %date% выведет на экран значение
переменной date — текущую дату в формате операционной системы.

С помощью команды SET обычно задается и модифицируется путь поиска
исполняемых программ
— переменная окружения PATH.

SET PATH=C:Windows;C:windowssystem32

После выполнения данной команды, поиск исполняемых файлов будет выполняться в
каталоге C:Windows, и, если результат неуспешен, в
C:windowssystem32

Допустим Вам необходимо выполнить программу myedit.exe, размещенную в
каталоге C:NewProgs

Если в командной строке не задан полный путь, а только имя
исполняемого файла — myedit.exe

то сначала будет выполняться поиск файла myedit.exe в текущем каталоге, и если
он не будет найден — в каталогах, список которых задается значением переменной
PATH. Символ ; является разделителем элементов в списке путей поиска.
Если в приведенном примере, текущим каталогом не является
C:NewProgs, и в остальных каталогах, заданных значением переменной
PATH. нет исполняемого файла myedit.exe, то запуск приложения myedit.exe
завершится ошибкой. Однако, если есть необходимость его запуска без указания полного
пути и при любом значении текущего каталога, можно модифицировать значение
переменной PATH

Команда

SET PATH=C:NewProgs;%path%

изменит текущее значение PATH,
добавив каталог C:NewProgs в начало списка.

   Выполнение команды SET без параметров позволяет получить текущие
значения переменных окружения:

NUMBER_OF_PROCESSORS=1 — количество процессоров

OS=Windows_NT- тип ОС

Path=C:WINDOWSsystem32;C:WINDOWS;C:Program FilesFar — путь поиска исполняемых файлов.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH — расширения для исполняемых файлов.

PROCESSOR_ARCHITECTURE=x86 — архитектура процессора.

PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD — идентификатор процессора.

PROCESSOR_LEVEL=6 — уровень (номер модели) процессора.

PROCESSOR_REVISION=0801 — версия процессора.

ProgramFiles=C:Program Files — путь к папке «Program Files»

PROMPT=$P$G — формат приглашения командной строки $P — путь для текущего каталога $G — знак «>».

SystemDrive=C: — буква системного диска.

SystemRoot=C:WINDOWS — каталог ОС Windows.

Значение некоторых переменных по команде SET не выдаются. В основном, это переменные, принимаемые значения которых динамически изменяются:

%CD% — Принимает значение строки текущего каталога.

%DATE% — Принимает значение текущей даты.

%TIME% — Принимает значение текущего времени.

%RANDOM% — Принимает значение случайного десятичного числа в диапазоне 1 -32767.

%ERRORLEVEL% — Принимает текущее значение кода завершения задачи ERRORLEVEL

%CMDEXTVERSION% — Принимает значение версии командного процессора CMD.EXE для расширенной обработки команд.

%CMDCMDLINE% — Принимает значение строки, которая вызвала
командный процессор.

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

ECHO %переменная%

ECHO %CD% — отобразить имя текущего каталога

ECHO %TIME% — отобразить текущее время

ECHO %ERRORLEVEL%
отобразить результат выполнения предыдущей команды.

Значения, принимаемые переменными окружения, могут быть расширены с помощью
специального признака — символа » ~ «, что получить частичное
значение (расширение переменной), или изменить его заменой какой-либо части.
Примеры использования расширений переменных рассмотрены ниже.


В состав дополнительных средств Windows 2000/XP, и в комплект дистрибутива Windows 7 входит специальная утилита для формирования пользовательских и системных переменных окружения SetX, позволяющая записывать имена и значения переменных в реестр . Ссылка «Список команд CMD Windows» в конце статьи.

Передача параметров командному файлу.

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

BAT-файл параметр1 параметр2 …
параметрN

В самом командном файле первый параметр будет доступен как переменная %1,
второй — %2 и т.п. Путь и имя самого командного файла доступно как переменная %0.
Для примера создадим командный файл, задачей которого будет выдача на экран значений введенных при его запуске параметров командной строки. Для вывода
текста на экран используется команда ECHO текст ,
однако если «текст» заменить на %0, — то будет выдано имя командного файла, %1 — первый аргумент, заданный в строке запуска, %2 — второй и т.д.

Создаем, например, командный файл params.bat следующего содержания:


echo off
echo Это командный файл %0

echo Первый параметр=%1

echo Второй параметр=%2

echo Третий параметр = %3

и запускаем его на выполнение следующей командой:


params.bat FIRST second «two words»

после его выполнения вы поймете, как это работает, и что
параметры содержащие пробелы, нужно заключать в двойные кавычки.

В первой строке командного файла используется
команда «echo off» для того, чтобы обрабатываемые командным процессором
строки не выдавались на экран.

   Для проверки наличия каких-либо входных параметров, передаваемых
командному файлу, можно проверить, является ли значение переменной %1
пустым:


if «%1» EQU «» goto error

….

:error

Echo Должен быть задан хотя бы один входной параметр

exit

   В командных файлах большого размера трудно обойтись без справочной
информации в виде комментариев, для чего используется конструкция

REM пробел текст

Строки, начинающиеся с REM пробел, командным процессором игнорируются.

rem ECHO OFF выключает режим вывода содержания строк командного
файла на экран

REM будет выводиться только результат их выполнения.

ECHO OFF

echo Первый параметр=%1

echo Второй параметр=%2

echo Третий параметр = %3

Если к имени команды первым символом добавляется @,
то независимо от режима ECHO (ON или OFF), вывод обрабатываемой строки не
выполняется. Попробуйте в данном примере «ECHO OFF» заменить на «@ECHO OFF» —
результат говорит сам за себя. Строка, которая выключает режим вывода,
не будет выдаваться на экран. Вывод эха на экран устанавливается по
команде ECHO ON и, обычно, используется в целях диагностики.


rem ECHO ON включает режим вывода содержания строк командного
файла на экран

REM будет сама командная строка и результат ее выполнения,

REM но строки, начинающиеся символом @ выводиться не будут
ECHO ON

@echo Первый параметр=%1

@echo Второй параметр=%2

@echo Третий параметр = %3

Переходы и метки.

    В командных файлах можно использовать команды условного перехода,
меняющие логику их работы в зависимости от выполнения определенных условий.
Для иллюстрации приемов использования условных переходов создадим командный
файл, целью которого будет присвоение заранее определенной буквы для
съемных носителей, в качестве которых будут использоваться флэш-диски.
Условия таковы — есть 2 флэш-диска, один из которых должен быть виден в
проводнике как диск X: а второй — как диск Y: независимо от того, в какой
порт USB они подключены и какие буквы присвоены им операционной системой.
Будем считать, что реальные диски могут быть подключены как F: или G:
Опознавание дисков будем выполнять по наличию файла с определенным именем
(лучше такой файл сделать скрытым в корневом каталоге и назвать его как-нибудь
необычно):

Flashd1.let — на первом диске

Flashd2.let — на втором

Таким образом, задача командного файла заключается в том, чтобы проверить
наличие на сменных дисках F: и G: файлов Flashd1.let
или Flashd2.let и, в зависимости от того, какой из них присутствует,
присвоить диску букву X: или Y:

Для поиска файла на диске воспользуемся командой IF EXIST:

IF EXIST имя_файла команда

В качестве команды проще всего воспользоваться SUBST, сопоставляющей имя диска и каталог.

SUBST X: C: — — создать виртуальный диск
X:, содержимым которого будет корневой каталог диска C:

    Для решения задачи, создаем командный файл, например setletter.bat, следующего содержания:


@ECHO OFF

IF EXIST G:flashd1.let SUBST X: G:

IF EXIST F:flashd1.let SUBST X: F:

IF EXIST G:flashd2.let SUBST Y: G:

IF EXIST F:flashd2.let SUBST Y: F:

    После выполнения этого командного файла у вас появятся диски X: и Y:

Однако, если такой файл выполнить повторно,
команда SUBST выдаст сообщение об ошибке — ведь диски X: и Y:
уже существуют.

Поэтому, желательно обойти выполнение SUBST, если виртуальные диски
X: и Y: уже созданы, или удалять их, используя SUBST с параметром -d
перед подключением. Попробуйте изменить командный файл setletter.bat с
использованием команды перехода GOTO,
осуществляющей передачу управления строке пакетного файла на указанную
метку.

GOTO метка

В качестве метки используется строка символов, начинающаяся
с двоеточия. Сделаем изменения в нашем командном файле, чтобы не возникало
сообщений об ошибке:

@ECHO OFF

REM если не существует X: — то перейдем на метку SETX

IF NOT EXIST X: GOTO SETX

REM если существует X: — перейдем на проверку наличия Y:

GOTO TESTY

:SETX

IF EXIST G:flashd1.let SUBST X: G:

IF EXIST F:flashd1.let SUBST X: F:

:TESTY

REM если Y: существует — завершим командный файл.

IF EXIST Y: GOTO EXIT

IF EXIST G:flashd2.let SUBST Y: G:

IF EXIST F:flashd2.let SUBST Y: F:

REM выход из командного файла

:EXIT

Конечно, данный пример не может считаться образцом программирования, но
главная цель, в данном случае, это не написание оптимального командного
сценария, а пояснения принципов использования меток и переходов. Далее по
тексту, я старался, насколько это возможно, использовать именно такой
подход — главное не оптимальность кода командного файла, а его максимальная
простота для понимания.

При выполнении измененного таким образом командного файла, сообщение об
ошибке при выполнении SUBST исчезнет.

Одним из важнейших приемов при написании сложных командных файлов
является анализ успешности выполнения конкретной команды или программы.
Признаки ошибок при выполнении команд можно отслеживать, анализируя
специальную переменную ERRORLEVEL ,
значение которой формируется при выполнении большинства программ.
Обычно ERRORLEVEL равно нулю, если программа завершилась без ошибок и
единице — при возникновении ошибки. Могут быть и другие значения, если они
предусмотрены в выполняемой программе.

   В качестве команды в строке командного файла можно использовать также
командный файл. Причем, для передачи с возвратом обратно к точке выполнения
вызывающего командного файла используется
команда CALL. Попробуйте создать командный файл test.bat, следующего содержания:


@ECHO OFF

ECHO Вызов 1.bat

CALL 1.bat

ECHO Возврат.

В этом же каталоге, создайте второй файл под именем 1.bat, содержащий
команду


PAUSE
, приостанавливающую выполнение командного файла до
нажатия любой клавиши.

@ECHO OFF

pause

При выполнении командного файла test.bat будет выдано на экран
сообщение

Вызов 1.bat

и управление получит командный файл 1.bat с одной единственной командой
pause. После начатия клавиши на клавиатуре управление будет возвращено
вызвавшему командному файлу
на строку «ECHO Возврат.» и на экран будет выдано

Возврат.

Если же в файле test.bat убрать CALL, оставив «1.bat», то возврат
выполняться не будет.

Вызываемый командный файл может создавать переменные и присваивать им
определенные значения, которые будут доступны для обработки в вызывающем
файле. Попробуйте изменить файл test.bat на следующее содержимое:


@ECHO OFF

ECHO Вызов 1.bat

CALL 1.bat

ECHO Получено из файла %MYFILE% значение MYNUMBER=%MYNUMBER%.


а в файле 1.bat на следующее


@ECHO OFF

SET MYFILE=»Very good 1.bat»

SET MYNUMBER=99

Кстати, используя передачу управления командному файлу, можно организовать
его зацикливание. Попробуйте добавить в конец файла test.bat строку:


CALL test.bat

Выйти из зацикливания командного файла можно по нажатию комбинации
CTRL-Break.

Возможно использование команды CALL для вызова процедуры внутри
командного файла.
В этом случае в качестве аргумента используется не имя внешнего файла, а
метка:


call :proc1

….

:proc1

….

exit

….

Примеры командных файлов.

   Использование утилит командной строки и командных файлов нередко позволяют
решить многие проблемы связанные с повседневной эксплуатацией компьютерной
техники. Большинство системных администраторов и грамотных пользователей
продолжают ими пользоваться, несмотря на то, что в Windows проявилось новое,
более мощное и современное средство управления системой — WMI
(Windows Management Instrumentation). Очевидно, не в последнюю очередь, это
обусловлено простотой реализации и, тем не менее, — достаточной
эффективностью использования командных файлов. Ниже приведены простые
примеры с комментариями, которые демонстрируют некоторые возможности и
способы применения .cmd и .bat

Своя команда для создания новых файлов.

   В составе операционной системы Windows нет специальной команды для создания нового файла, но без нее можно легко обойтись несколькими способами:

Копирование с клавиатуры в файл

COPY CON myfile.txt

При выполнении этой команды данные с клавиатуры (стандартное устройство CON — консоль) будут заноситься в файл myfile.txt. Нажатие клавиши F6 или комбинации CTRL-Z завершит вывод.

Перенаправление вывода

ECHO 1 > myfile.txt

При выполнении этой команды будет создан файл myfile.txt, содержащий символ «1»

Комбинация перенаправления ввода и перенаправления вывода:

COPY CON > myfile.txt < xyz

При выполнении этой команды, как и в первом случае, используется копирование
с консоли в файл, но вместо ручного ввода данных с клавиатуры используется ввод с
несуществующего файла xyz. Система выдаст сообщение, о том, что такого
устройства или файла
не существует, но пустой файл myfile.txt будет успешно создан.

Еще проще использовать команду копирования из фиктивного устройства nul в файл. Использование устройства nul позволяет обойти стандартные операции ввода-вывода, которые для него реально не выполняются.

COPY NUL myfile.txt

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

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

Содержимое файла:

@echo off

REM Создание пустого файла, имя которого задано в строке запуска

if «%1» EQU «» goto error

copy nul %1

goto exit

:error

ECHO ОШИБКА: Необходимо задать имя нового файла !

:exit

    Для простоты использования, поместите этот командный файл в системный каталог
(например, в C:windowssystem32) или любой другой, существующий в путях
поиска, задаваемых значением переменной PATH). Теперь, в командной строке, находясь в любом каталоге можно одной командой создавать пустые файлы.

Командная строка:

nf.bat myfile.txt — создать файл с именем myfile.txt в текущем каталоге.

nf.bat C:myfile.txt — создать файл в корневом каталоге диска C:

nf.bat «%USERPROFILE%myfile.txt» — создать файл в каталоге профиля текущего пользователя.

Расширение командного файла (.bat) можно не набирать и команда еще больше упрощается:

nf myfile.txt

В тексте командного файла присутствует проверка, задано ли имя
создаваемого файла в командной строке (if «%1%» EQU «» goto error), и если не
задано — выводится сообщение об ошибке и командный файл завершает
свою работу.

В качестве тренировки, попробуйте добавить в этот командный файл проверку
на существование файла с именем, указанным в командной строке.

Присвоение съемному диску одной и той же буквы.

    Задача заключается в том, чтобы съемный USB диск (флэш диск) был доступен
всегда под одной и той же буквой, независимо от того, на каком компьютере он
используется
и как он подключен. Для ее решения воспользуемся уже упоминаемой выше
командой SUBST, но реализуем присвоение новой буквы диску с
использованием подстановочного значения переменной %0, создаваемой
системой при каждом запуске командного файла.

Выберем для съемного диска желаемую букву, например — X.

Некоторые из переменных окружения, в том числе и переменная %0
принимающая значение пути и имени выполняющегося командного файла, позволяют
при определенной модификации с использованием специального признака —
символа » ~ « получить ее частичное значение (расширение переменной).
Например, не полный путь
файла, а только его имя, или каталог расположения, или букву диска, с
которого он был запущен или еще около десятка различных элементов, связанных
с подстановочными значениями переменной %0.

Имя диска, с которого
был запущен командный файл доступно как переменная %~d0.

Теперь создаем командный файл следующего содержания:

@echo off

subst X: %~d0

что означает — создать виртуальный диск X:, которому сопоставлен
логический диск, являющийся частью пути данного командного файла.
Если такой файл записать на флэшку, и выбрать присваиваемую букву диска
поближе к концу алфавита (чтобы не оказалась занятой другим реальным дисковым
устройством) то после его запуска, в системе будет создаваться новый диск
всегда под одной и той же буквой.

Дополнительное представление о подстановочных значениях
переменной %0 можно получить из командного файла следующего
содержания:

@echo off

ECHO ОБРАБАТЫВАЕТСЯ ФАЙЛ — %0

ECHO Дата/время создания/изменения командного файла — %~t0

ECHO Путь командного файла — «%~f0»

ECHO Диск командного файла — %~d0

ECHO Каталог командного файла — «%~p0»

ECHO Имя командного файла — %~n0

ECHO Расширение командного файла — %~x0

ECHO Короткое имя и расширение — %~s0

ECHO Атрибуты командного файла — %~a0

ECHO Размер командного файла — %~z0

Создание архива, имя которого содержит дату и время.

    Решим следующую задачу — нужно создать архив файлов, находящихся в каталоге
C:Program FilesFAR. Имя архивного файла должно состоять из текущего времени
(часы.минуты.секунды — ЧЧ.ММ.СС.rar), и помещен он должен в новый каталог, имя которого должно состоять из текущей даты
(день.месяц.год — ДД.ММ.ГГГГ). Для архивирования будем использовать архиватор RAR.
Формат запуска для создания архива:

RAR a -r < путь и имя архива > < Путь и имя архивируемых данных >

a — команда создания архива.

-r — ключ, определяющий архивирование подкаталогов (т.к. в исходной папке есть подкаталоги).

Таким образом, для решения задачи нужно правильно создать имена и пути для RAR. Для чего
воспользуемся следующими исходными данными:

  • В командных файлах можно получить доступ к текущей дате и текущему времени — переменные %DATE% и %TIME%
  • В командных файлах можно создавать временные переменные с помощью команды SET.
  • Значение временных переменных может быть сформировано на основе %DATE% и %TIME% путем пропуска и (или) замещения их частей с помощью специальной конструкции с использованием символа ~ и числового значения, определяющего группу символов из данных текущего значения переменной.

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

    Дата, получаемая из переменной %DATE% при стандартных настройках региональных установок Windows 2000
    выглядит следующим образом:

    Пн 21.01.2005 — День недели(2 символа)-Пробел(1 символ)-дата(10 символов) — всего 13 символов.

    В Windows XP/Vista/7 день недели отсутствует, что несколько упрощает структуру даты.
    Для создания нового каталога в командной строке используется команда

    MD имя каталога .

    Имя каталога нужно получить из текущей даты.
    Создаем в памяти временную переменную VDATE и присваиваем ей значение
    переменной окружения DATE, без первых 3-х символов (Пн и пробел) — 20.01.2005:

    set VDATE=%date:~3%

    В версиях Windows, где в значении принимаемом переменной DATE, отсутствует
    день недели (3 символа — «Пн «), значение VDATE получится не тем, что
    требуется. Чтобы не анализировать признаки наличия данного кода, можно
    воспользоваться и другим вариантом — не пропустить первые 3 символа (~3) от
    начала строки переменной DATE, а взять 10 символов от конца строки, указав число 10 со знаком «минус» — будет тот же результат — 20.01.2010

    set VDATE=%date:~-10%

    Создаем каталог на диске C:, имя которого = текущая дата из переменной VDATE:

    MD C:%VDATE%

    После выполнения этой команды на диске C: будет создан каталог с именем 20.01.2005

    Можно обойтись без лишних операторов, связанных с формированием значения переменной VDATE, которую я использовал для упрощения понимания структуры создаваемого имени каталога:

    MD %DATE:~-10% — создать каталог, имя которого будет представлено в виде текущей даты ДД.ММ.ГГГГ

    Время, получаемое из переменной %TIME% выглядит так :

    14:30:59.93 — Часы, минуты, секунды, сотые доли секунды.

    Сотые доли — это в имени файла архива, пожалуй, лишнее. Создаем временную
    переменную VTIME и присваиваем ей текущее время без последних 3-х символов, т.е
    пропускаем 0 символов от начала и отсекаем 3 символа от конца. Количество пропущенных и отсекаемых символов разделяются запятой:

    set VTIME=%time:~0,-3%

    Теперь VTIME = 14:30:59, но знак двоеточия ( : ) в имени файла использовать нельзя, это специальный символ, использующийся в именах устройств (диск C:). Поэтому, его придется заменить его на любой другой символ, допустимый в имени файла, например, точку. Для замены символов используется знак » = «

    set VTIME=%VTIME::=.% — заменить в переменной VTIME символ двоеточия на символ точки.

    Переменная VTIME примет значение 14.30.59

    Запустим архиватор:

    rar.exe a -r C:%VDATE%%VTIME%.rar «C:Program filesfar*.*»

    Теперь можно создать командный файл с содержимым:

    set VDATE=%date:~-10%

    md c:%VDATE%

    set VTIME=%time:~0,-3%

    set VTIME=%VTIME::=.%

    rar.exe a -r C:%VDATE%%VTIME%.rar «C:Program filesfar*.*»

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

    http://ab57.ru/cmd.html

  • Понравилась статья? Поделить с друзьями:
  • Сценарий акции ко дню народного единства
  • Сценарий windows cmd установка
  • Сценарий акции дня народного единства
  • Сценарий windows bat
  • Сценарий акции день россии