Найти в Дзене
Айтишник

Основные возможности командной строки (CMD) Windows

Оглавление

В этой статье описаны основные возможности командной оболочки Windows. Это полезно знать и использовать для написания скриптов.

Основы

Описание

CMD — это командная оболочка операционных систем Windows. Она работает в двух режимах: интерактивном (используется взаимодействие с пользователем) и пакетном (для написания сценариев и программ).

Преимущества:

  • содержится во всех ОС Windows по умолчанию, поэтому никакого дополнительного ПО не требуется устанавливать для ее использования
  • написан пакетный файл в 90% случаев заработает на любой ОС Windows
  • есть системные скрипты используемых операционная система в своей работе и зная основы CMD вы сможете легко их понимать и редактировать под свои нужды
  • научившись использовать командную оболочку для написания скриптов вы сможете с таким же успехом использовать ее в интерактивном режиме, для работы и обслуживания ОС Windows
  • удобно писать небольшие сценарии и программы для обслуживания операционной системы
  • в интернете материалов и примеров использования этой оболочки достаточно для того, чтобы изучить основы работы и тонкости использования этого программного обеспечения

Недостатки:

  • возможности CMD довольно ограничены и написать серьезный проект будет трудно

Запуск

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

Помощь

Для помощи существует команда help. Набрав ее вы получите список команд и их краткое описание. Для детального описания команды интересующей вас нужно ввести help <имя команды>, или <имя команды> /?

Утилита echo и вывод команд

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

1echo Hello world

будет вывод на экран

1Hello world

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

1echo.

Режим отображения команд на экране.

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

1echo

без параметров показывает статус режима вывода команд на экран (включен или выключен).

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

1echo off

Для включения режима вывода команд на экран введите

1echo on

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

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

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

1@echo off

Операторы командной строки

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

Оператор конвейеризации | :

команда1 | команда2 — результат получен после выполнения команды1 служить входным параметром для команди2, удобно использовать для передачи данных между командами

Операторы перенаправления результатов выполнения > >> << < :

<команда> [путь] имя файла — команда принимает содержимое файла как входной параметр

<команда> [путь] имя файла — результат выполнения команды будет записано в файл, если файл не существует он будет создан, если файл существует он будет перезаписан

<команда >> [путь] имя файла — результат выполнения команды будет записано в файл, если файл не существует он будет создан, если файл существует результат допишеться в конец файла

<команда> [путь] имя файла> [путь] имя файла — данные с первого файла передадутся команде как параметр, а результат выполнения команды будет записан во второй файл

Операторы & && || () :

команда1 & команда2 — последовательное выполнение команд, сначала выполнится команда1, а затем команда2

команда1 && команда2 — команда2 исполнится только в случае успешного выполнения команды1

команда1 || команда2 — команда2 исполнится только в случае, если команда1 завершилась с ошибкой

(команда1 & команда2) && команда3 — группировка команд, команда3 исполнится только в случае, если команда1 и команда2 выполнятся успешно

Математические выражения.

Арифметические операторы:

+ — добавление
— вычитание
/ — деления
* — умножение
% — модуль
+= — увеличение и присвоения на соответствующее число
-= — уменьшение и присвоения на соответствующее число
*= — умножение и присвоения на соответствующее число
/= — деление и присвоение на соответствующее число

Оператор присваивания (=).

Операторы сравнения:

== — равно
EQL — ровное
NEQ — не равно
LSS — меньше
LEQ — меньше или равно
GTR — более
GEQ — больше, или равно

Побитовые операторы (работа с двоичными данными).

Комментарии

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

1rem [текст]

Работа с переменными

Описание работы с переменными в командной строке.

Команда set

За работу со сменными отвечает команда set.

Просмотр переменных.

Для просмотра всех созданных переменных нужно ввести команду set без параметров.

1set

Для просмотра значения конкретной переменной нужно ввести команду

1set [имя переменной]

Для просмотра всех переменных которые начинаются test (например переменные test1, test2 и т.д.) нужно ввести команду

1set test

Версия Windows и архитектура системы

ver — команда выводит версию операционной системы.

Версии Windows

Версія ОСОС1.04Windows 1.02.11Windows 2.03Windows 3.04.0.950Windows 954.00.1111Windows 95 OSR24.00.1381Windows NT 4.04.10.1998Windows 984.10.2222Windows 98 SE4.90.3000Windows ME5.00.2195Windows 20005.1.2600Windows XP5.2.3790Windows XP Professional x64 EditionWindows Home ServerWindows Server 2003 5.2.3790.1180Windows Server 2003, Service Pack 15.2.3790.12186.0.6000.16386 Windows Vista, RTM (Release to Manufacturing)6.0.6000Windows VistaWindows Server 20086.0.6001Windows Vista SP1Windows Server 2008 SP16.0.6002Windows Vista SP2Windows Server 2008 SP26.1.7600.16385Windows 7, RTM (Release to Manufacturing)Windows Server 2008 R2, RTM (Release to Manufacturing)6.1.7600Windows 7Windows Server 2008 R26.1.7601Windows 7 SP1Windows Server 2008 R2 SP16.2.9200.16384Windows 8, RTM (Release to Manufacturing)6.2.9200Windows 8Windows Server 20126.3.9600Windows 8.1Windows Server 2012 R2

Для определения архитектуры компьютера существует переменная PROCESSOR_ARCHITECTURE, для ее вывода введите команду

1echo %PROCESSOR_ARCHITECTURE%

Результаты:

x86 — 32-битная версия Windows

AMD64 — 64-битная версия Windows

Примеры

Копирование новых файлов из одной папки в другую

Задача следующая. Есть локальная папка в которую Медок делает резервные копии баз данных раз в определенный период (через планировщик Медка настроено в пн-пт в обед 13:10), из этой папки нужно копировать новые файлы в сетевую папку на случай выхода из строя локального компьютера » колонки для компьютера. Основное условие, это копирование только новых файлов, которые появились в локальной папке с бэкапа.

Для этой задачи есть команда replace которую нужно использовать с ключом /A.

Вот пример скрипта который копирует новые файлы из локальной папки в сетевую

123456789101112131415161718192021222324252627@echo offrem Путь к локальной папкеset localbackupdir=pathtolocaldirrem Путь к сетевой папкеset remotebackupdir=pathtoremotedir�ь к робочей папкеset workdir=pathtoworkdirrem Путь к папке с логамиset logdir=pathtologdirrem Название лога который содержит дату созданияset logname=log-%date:~6,4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%.txt rem Запуск проверокrem Проверка существует ли папка с локальними бекапамиif exist "%localbackupdir%" (echo verification 1 is complited > "%logdir%\%logname%") else (mkdir "%localbackupdir%")rem Проверка существует ли папка для логовif exist "%logdir%" (echo verification 2 is complited >> "%logdir%\%logname%") else (mkdir "%logdir%")rem Проверка существует ли сетевая папкаif exist "%remotebackupdir%" (echo verification 3 is complited >> "%logdir%\%logname%") else (echo error 10: remote backup directory "%remotebackupdir%" is not exist >> "%logdir%\%logname%" & exit 10) rem Запуск копированияcd /d "%workdir%" || (echo error 11: problem is workdir "%workdir%" >> "%logdir%\%logname%" & exit 11)replace "%localbackupdir%\*" "%remotebackupdir%" /A >> "%logdir%\%logname%"if errorlevel 1 (echo error 13: replays is over whith error %errorlevel% >> "%logdir%\%logname%" & exit 13) echo replays is complited >> "%logdir%\%logname%"exit 0

P.S. На момент написания скрипта я не знал что медок умеет делать резервные копии в сетевые папки, однако это нужно настраивать еще одной задачей в планировщике Медка, поскольку в одной задачи нельзя настроить несколько мест для создания резервной копии.

Рекомендуем почитать