командный язык операционной системы windows

Список команд Windows ( Windows CMD ) с описанием и примерами.

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

Способы запуска командной строки

Ссылки на материалы по настройке командной строки и приемах работы с ней размещены в конце страницы.

Справочник по командам CMD Windows

Данная страница представляет собой самый полный документ в русскоязычном сегменте Интернет, содержащий список команд командной строки всех версий Windows. Наименования подавляющего большинства команд являются ссылками и ведут на страницы с подробным их описанием и примерами использования. В разных версиях ОС семейства Windows набор поддерживаемых команд, их параметры командной строки, синтаксис и отображение результатов выполнения могут различаться. Одна и та же утилита командной строки может присутствовать в стандартной поставке одной версии Windows, но отсутствовать в другой, или входить в состав дополнительных средств, как например, Resource Kit или Software Development Kit.

На данной странице представлено описание не только внутренних команд CMD, но и стандартных утилит командной строки, входящих в состав конкретных версии операционной системы (ОС) семейства Windows. Некоторые из приведенных команд устарели, и больше не поддерживаются разработчиком или не имеют смысла в современных операционных системах, что отмечается в описании команды.

Список команд постоянно обновляется и включает в себя все новейшие команды, добавляемые в стандартную поставку при выходе новых версий или обновлений ОС Windows 10.

IPCONFIG просмотр и управление конфигурацией протокола IP

PING утилита проверки доступности узла

SHIFT сдвиг входных параметров для командного файла

Прочие материалы по работе с командной строкой Windows:

Источник

Командный язык операционной системы MSDOS и Windows

Загрузка компьютера с операционной системой MS DOS

При включении компьютера (или нажатии клавиши RESET) очищается содержимое оперативной памяти, из ПЗУ переписывается в ОП и запускается BIOS. BIOS производит тестирование памяти и устройств компьютера на работоспособность; при наличии критических ошибок выдается звуковой сигнал и/или сообщение и процесс загрузки прекращается. В процессе тестирования предоставляется возможность войти в CMOS и внести изменения в параметры конфигурации компьютера (если такие изменения внесены, то необходимо процесс загрузки начать заново). В первом секторе диска, где находится операционная система, BIOS считывает программу-загрузчик и передает ей управление. Программа загрузчик считывает и загружает в оперативную память файлы IO.SYS, MSDOS.SYS, COMMAND.COM и CONFIG.SYS. Далее загружаются драйверы устройств и выполняются команды конфигурирования, указанные в файле CONFIG.SYS, и выполняется файл AUTOEXEC.BAT, запускающий отмеченные там программы (например, NC или Windows).

В командном файле AUTOEXEC.BAT записывают команды, которые должны выполняться каждый раз при включении компьютера, например:

команды запуска некоторых программ, списки каталогов, в которых следует производить поиск запускаемых программ и др.

Если файла AUTOEXEC.BAT нет, то на экране появляется запрос на ввод текущей даты и времени, после чего на экране появляется приглашение (например, С:\>) для ввода команд DOS.

Для общения с ПК на языке команд операционной системой предоставляется пользователю возможность ввода команд и необходимых параметров этих команд в специальном месте окна экрана – в командной строке. В командной строке всегда указан логический дисковод, путь к текущему каталогу (текущей папке) и приглашение к набору команды в виде символа “>”.

Например: С:\tema\book\>[место для ввода команды и ее параметров]

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

В приведенном примере текущим является каталог book.

dir [дисковод] [путь] [ключи]

Ключи:

Пример:

Dir a: просмотр корневого каталога логического диска А

Dir a:/p/w постраничный вывод каталога диска А с выводом на одной строке до 5 имен файлов

md [дисковод:] [путь]

Назначение: Команда создания каталога.

Этой командой можно создавать многоуровневую структуру каталога. В MS DOSмаксимальная длина пути от корневого каталога до каталога нижнего уровня должна быть не более 63 символов.

Пример:

md \util\proba– создание поддиректории probaв каталоге util.

Mem [ключи]

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

Ключи:

Назначение: очищает экран

CD [дисковод:][путь]

Назначение: Производит смену текущего каталога, то есть текущий каталог меняет на указанный.

Пример:

Del [дисковод :] [полное имя файла][/p]

Назначение: Команда на удаление файла (файлов).

Ключи:

/p— выводить запрос на подтверждение удаления.

В команде можно использовать подстановочные символы «*», «?» так, как они были объяснены выше.

Примеры:

Физически удаление файла происходит следующим образом. В каталоге стирается первый символ имени, а в FAT кластеры, где находился файл, помечают как свободные. То есть до первой записи на физическом носителе можно восстановить случайно удаленный файл специальной программой (в MS-DOS – это PCTOOLS). В Windows удаление файлов происходит через корзину, и место в FAT помечается как свободное после очистки корзины. Но пока файл находится в корзине, его можно восстановить.

copy [дисковод:] полное_имя_1 [дисковод:] полное_имя_2

Назначение: Копирует один и более файлов в указанное место.

Copy [дисковод:] +[дисковод:] [дисковод:]

Назначение: Объединяет однотипные файлы:

copy con

Назначение: Создает текстовый файл с консоли клавиатуры.

copy /b prn

Назначение: Выводит файл на печать:

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

Примеры:

Copy d:\a*.txt c:\util – копировать файлы, имеющие в имени 1-й символ “а”, с диска D на диск C в директорию util

Copy primer.txt+proba.txt 2prim.txt – объединить файлы primer.txt и proba.txt и сохранить объединенный файл под именем 2prim.txt в текущем каталоге.

ren [дисковод:] имя файла1 имя файла2

Назначение: Изменяет имя файла или каталога

Команда rd [дисковод:] [путь]

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

type [дисковод:] [путь] имя файла

Назначение: Отображает на дисплее содержимое текстового файла.

Пример:

type c:\util\primer.txt – просмотреть файл primer.txt на диске С в директории util

Ver

Назначение: Выдает версию операционной системы установленной на компьютере

xcopy [дисковод:] [путь1] [дисковод:] [путь2][ ключи]

Назначение: Копирует файлы и каталоги более низких уровней.

ключи:

/e – копировать все подкаталоги, даже если они пустые

Пример:

format дисковод [ключи]

Назначение: Форматирует указанный диск в формате пригодном для хранения файлов MS-DOS.

При форматировании на диске создается новая таблица FAT и файл корневого каталога.

ключи:

Пример:

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Источник

Язык интерпретатора Cmd.exe. Командные файлы

Язык интерпретатора Cmd.exe. Командные файлы

Язык оболочки командной строки ( shell language ) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:

Вывод сообщений и дублирование команд

По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,

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

то это решит все проблемы с дублированием команд.

В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды

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

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

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

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

то на экран выведется сообщение

и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:

Например, в следующей команде:

В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.

Fn Переменная %n расширяется до полного имени файла %

Dn Из переменной %n выделяется только имя диска %

Pn Из переменной %n выделяется только путь к файлу %

Nn Из переменной %n выделяется только имя файла %

Xn Из переменной %n выделяется расширение имени файла %

Sn Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла %

Данные синтаксические конструкции можно объединять друг с другом, например:

DPn — из переменной %n выделяется имя диска и путь,

NXn — из переменной %n выделяется имя файла и расширение.

Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 3.1, к параметру %1 даст следующие результаты:

Источник

Команды Windows

все поддерживаемые версии Windows (сервер и клиент) имеют набор встроенных команд консоли Win32.

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

Предварительные требования

Сведения, содержащиеся в этом разделе, применимы к:

Общие сведения о командной оболочке

командная оболочка была первой оболочкой, встроенной в Windows для автоматизации стандартных задач, таких как управление учетными записями пользователей или ночное резервное копирование с пакетными файлами (.bat). с помощью Windows сервера сценариев можно выполнять более сложные сценарии в командной оболочке. Дополнительные сведения см. в разделе cscript или Wscript. С помощью скриптов можно более эффективно выполнять операции, чем с помощью пользовательского интерфейса. Скрипты принимают все команды, доступные в командной строке.

Windows имеет две командные оболочки: командная оболочка и PowerShell. Каждая оболочка представляет собой программную программу, обеспечивающую прямой обмен данными между вами и операционной системой или приложением, предоставляя среду для автоматизации ИТ-операций.

PowerShell был разработан для расширения возможностей командной оболочки для выполнения команд PowerShell, называемых командлетами. командлеты похожи на команды Windows, но предоставляют более расширяемый язык сценариев. вы можете выполнять команды Windows и командлеты powershell в powershell, но командная оболочка может выполнять только команды Windows, а не командлеты powershell.

для наиболее надежной и актуальной Windows автоматизации рекомендуется использовать PowerShell вместо команд Windows или Windows сервера скриптов для автоматизации Windows.

Вы также можете скачать и установить PowerShell Core, версию PowerShell с открытым исходным кодом.

Неправильное изменение реестра может серьезно повредить систему. Перед внесением следующих изменений в реестр следует создать резервную копию всех ценных данных на компьютере.

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

Справочник по командной строке A-Z

Чтобы найти сведения о конкретной команде, в следующем меню A-Z щелкните букву, с которой начинается команда, а затем щелкните имя команды.

Источник

Командные файлы Windows


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

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

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

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

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

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

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

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

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

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

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

cmd.exe /C «HELP IF» & ”HELP IF”

Завершится выполнением первой команды и сообщением об ошибке для второй:

«»HELP» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

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

SET PATH=C:\NewProgs;%path%
изменит текущее значение PATH, добавив каталог C:\NewProgs в начало списка. Для добавления каталога в конец списка используется несколько иная конструкция:

SET PATH=%path%; C:\NewProgs

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

OS=Windows_NT- тип ОС

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

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

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

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

echo off echo Это командный файл %0
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3

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

params.bat FIRST second «two words»

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

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

if «%1» EQU «» goto error
.
.
:error
Echo Должен быть задан хотя бы один входной параметр
exit

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

rem ECHO ON включает режим вывода содержания строк командного rem файла на экран
REM будет сама командная строка и результат ее выполнения,
REM но строки, начинающиеся символом @ выводиться не будут ECHO ON
@echo Первый параметр=%1
@echo Второй параметр=%2
@echo Третий параметр = %3

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

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

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

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

@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:\

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

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

@ECHO OFF
ECHO Вызов 1.bat
CALL 1.bat
ECHO Возврат.

Вызываемый командный файл может создавать переменные и присваивать им определенные значения, которые будут доступны для обработки в вызывающем файле. Попробуйте изменить файл 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 может использоваться не только для вызова другого командного файла, для вызова внутренней подпрограммы. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:

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


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

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

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

COPY CON myfile.txt

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

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

COPY CON > myfile.txt nul в файл. Использование устройства nul позволяет обойти стандартные операции ввода-вывода, которые для него реально не выполняются. При выполнении копирования с фиктивного устройства в файл будет создан пустой файл без каких-либо сообщений об ошибке.

COPY NUL myfile.txt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-10%
md c:\%VDATE%
set VTIME=%time:

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

Выполнение каких либо действий в заданный интервал времени.

IF /I строка1 оператор_сравнения строка2 команда

где оператор_сравнения принимает следующие значения:

0,2% lss 12 goto tst2

0,2% gtr 10 goto excalc

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

Пример создания архива каталога «Мои Документы».

Этот командный файл создает архивы содержимого папки «Мои Документы» пользователей Win2K/XP/7-10, размещая их в каталоги
C:\ARHIV\Мои документы\Имя пользователя\Дата\время

Используются переменные окружения USERPROFILE, USERNAME, WINDIR. Если вы разобрались с предыдущим примером, то содержимое данного командного файла не должно вызывать особых затруднений, поскольку в нем присутствуют комментарии ( rem ), поясняющие в короткой форме смысл и назначение последующих строк:

В операционных системах Windows XP/Vista/7 формат даты по умолчанию не содержит название дня недели. Если есть необходимость получить это значение без изменения настроек системы и использования дополнительного программного обеспечения, можно воспользоваться сценарием Hindows Script Host (WSH).

— создаем файл сценария для получения названия дня недели, пусть с именем weekday.vbs, и содержащим строку вывода на экран результата выполнения функции WeekDayName

WScript.Echo WeekDayName(Weekday(Now), True)
— выполняем скрипт WSH с использованием консольной версии программы обработки сценариев cscript.exe и подавлением лишних сообщений (ключ //nologo)
cscript //nologo weekday.vbs

Пример командного файла для получения названия дня недели с использованием функции WeekDayName :

Существуют задачи администрирования, которые решаются значительно проще с использованием сценариев WSH или Power Shell, а не командных файлов CMD Windows.

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

Благодаря набору UNIX Shell and Utilities многие, не решаемые в среде командной строки Windows задачи, можно решить с помощью unix-подобных утилит. И в том, числе, задачу изменения даты и времени создания, модификации и доступа файла или папки с помощью утилиты touch.exe Скачать, около 50Кб

Справку по работе с touch.exe можно получить при запуске утилиты с принятым в Unix ключом «—help»

При этом пользователю выводится краткая подсказка

touch [-acm] [-r|-f файл] [-t [[CC]YY] MMDDhhmm.[SS]] file файл

Примеры использования утилиты touch.exe в командной строке Windows:

Выполнение команд по расписанию.

Примеры команды
AT [\\имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]]
AT [\\имя_компьютера] время [/INTERACTIVE] [ /EVERY:день[. ] | /NEXT:день[. ]] «команда»

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

Остановка и запуск системных служб.

Для остановки и запуска служб из командной строки, в любой версии Windows, можно воспользоваться командой NET.EXE

net stop «DNS-клиент»

net start «DNS-клиент»

То же, с использованием короткого имени:

net start Dnscache

Для управления службами гораздо удобнее воспользоваться утилитой PsService.exe из утилит PsTools от Microsoft Sysinternals. Утилита не требует установки и работает в любой OS Windows. Кроме запуска и остановки, позволяет выполнить поиск конкретной службы на компьютерах локальной сети, опросить состояние и конфигурацию службы, изменить тип запуска, приостановить службу, продолжить, перезапустить.

Подробное описание команды SC с примерами имеется в разделе со списком команд Windows.

Этот простенький командный файл выдаст на экран значение переменной ERRORLEVEL по конкретной командной строке. Вначале выполняется проверка на наличие хотя бы одного входного параметра, и если ничего не задано, выдается сообщение об ошибке и происходит завершение по команде exit. Если же хотя бы один параметр задан, то входные параметры считаются командной строкой и выполняются, а значение ERRORLEVEL выдается с помощью команды ECHO. Содержимое файла (я назвал его echoEL.bat):

@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать командную строку для определения ERRORLEVEL
exit
:PARMOK
%1 %2 %3 %4 %5 %6 %7 %8
ECHO %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL = %ERRORLEVEL%

Диалог с пользователем

Для диалога с пользователем можно использовать команду:
SET /P имя переменной = текст
при выполнении которой, на экран выдается текстовое сообщение текст и ожидается ввод ответа. Например, выполним запрос ввода пароля и присвоим его значение переменной «pset»:

@ECHO OFF
:CHOICE
CHOICE /C:1230 /T:0,10 Ваш вариант
IF %ERRORLEVEL% EQU 4 GOTO EXIT
echo Ваш выбор = %ERRORLEVEL%
GOTO CHOICE
:EXIT

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

Задержки в командных файлах

Когда-то, еще в DOS, для организации ожидания в командном файле использовалась команда SLEEP, но затем она почему-то перекочевала из стандартного установочного набора Windows в дополнительный Resource Kit. Можно просто скопировать его оттуда в каталог \system32 и использовать в ваших командных файлах.

Если же Resource Kit нет под рукой, можно воспользоваться ранее рассмотренной командой CHOISE без вывода текста и с автоматическим формированием ответа через nn секунд (1-99):

Более универсальный и простой способ основан на использовании утилиты ping.exe для интерфейса замыкания на себя localhost (локальная петля, петлевой интерфейс). Опрос данного интерфейса командой ping ( ping на имя хоста localhost или IP- адрес 127.0.0.1) выполняется без реальной передачи данных, т.е. практически мгновенно, а интервал между посылкой icmp-пакетов составляет 1 секунду. Указывая количество «пингов» с помощью ключа «-n» можно получить задержку на n секунд:

В составе команд CMD Windows 7-10 имеется команда TIMEOUT для организации режима ожидания заданного интервала времени, либо до нажатия любой клавиши на клавиатуре. Описание команды – в разделе «Список команд CMD Windows»

Определение доступности IP-адреса

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

При проверке связи не удалось обнаружить узел 456.0.0.1. Проверьте имя узла и повторите попытку.

Ответ на ping доступного узла:

Обмен пакетами с yandex.ru [87.250.250.11] по 32 байт:
Ответ от 87.250.250.11: число байт=32 время=10мс TTL=55

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

Как видно из справки, find.exe можно использовать для поиска нужной строки символов в тексте, переданном по конвейеру командой ping.exe. Если текст найден, значение переменной ERRORLEVEL будет равно 0

Определение текущей версии Windows.

Microsoft Windows XP [Версия 5.1.2600]

В среде Windows 7, текст отличается:

Microsoft Windows [Version 6.1.7600]

В среде Windows 10:

Microsoft Windows [Version 10.0.14393]

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

if %errorlevel% == 0 set curr_OS=Windows 2000

if %errorlevel% == 0 set curr_OS=Windows XP

if %errorlevel% == 0 set curr_OS=Windows Server 2003

if %errorlevel% == 0 set curr_OS=Windows Vista

if %errorlevel% == 0 set curr_OS=Windows 7

if «%curr_OS%»==»» set curr_OS=Unknown

Имя компьютера \\COMP1

Полное имя компьютера COMP1.Mydomain

Имя пользователя USER2

Активная рабочая станция на

Версия программы Windows 2002

Домен рабочей станции Mydomain

DNS-имя домена рабочей станции Mydomain

Домен входа Mydomain

Интервал ожидания открытия COM-порта (с) 0

Отсчет передачи COM-порта (байт) 16

Таймаут передачи COM-порта (мс) 250

Команда выполнена успешно.

Для среды Windows 7 результат выполнения команды выглядит так:

Имя компьютера \\COMP1

Полное имя компьютера COMP1.Mydomain

Имя пользователя user2

Активная рабочая станция на

Версия программы Windows 7 Professional

Домен рабочей станции Mydomain

Домен входа Mydomain

Интервал ожидания открытия COM-порта (с) 0

Отсчет передачи COM-порта (байт) 16

Таймаут передачи COM-порта (мс) 250

Команда выполнена успешно.

net config workstation | find /i «Windows 2000»

if %errorlevel% == 0 set curr_OS=Windows 2000

REM net config workstation | find /i «Windows 2002»

if %errorlevel% == 0 set curr_OS=Windows XP

net config workstation | find /i «Server 2003»

if %errorlevel% == 0 set curr_OS=Windows Server 2003

net config workstation|find /i «Windows Vista»

if %errorlevel% == 0 set curr_OS=Windows Vista

net config workstation | find /i «Windows 7» > nul

if %errorlevel% == 0 set curr_OS=Windows 7

REM Плюс поиск по «Professional»

net config workstation | find /i «Версия программы» | find «Professional»

if errorlevel 0 if not errorlevel 1 set curr_OS=Windows 7 PRO

REM Если версия неизвестна:

if «%curr_OS%»==»» set curr_OS=Unknown

reg query «HKLM\Software\Microsoft\Windows NT\CurrentVersion» /V ProductName

При выполнении команды на экран выводится содержимое параметра реестра с названием Windows. Пример отображаемой информации при выполнении команды в среде Windows 10 Pro:

ProductName REG_SZ Windows 10 Pro

Результат для случая Windows XP Professional:

ProductName REG_SZ Microsoft Windows XP

Имя параметра ProductName и тип данных REG_SZ можно не отображать, выделив только подстроку с названием системы с помощью FOR:

For /F «Tokens=2* Delims= » %%A In (‘Reg Query «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion» /V ProductName^|Find «REG_SZ»‘) Do Set OS1=%%B

При выполнении данного командного файла будет отображаться только название ОС Windows.

Поиск компьютеров с запущенным приложением

В случае, когда в командном файле используется параметр, не помешает проверить, задан ли он в командной строке при запуске, и, если не задан, завершить выполнение, отобразив предупреждающее сообщение пользователю. Если же параметр задан, выполнение файла будет продолжено, например, к метке «PARMOK»:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK

Окончательное содержимое командного файла:

Поиск компьютеров с запущенным приложением по списку

Имя сервера &nbsp &nbsp &nbsp Заметки
&nbsp &nbsp &nbsp
——-
\\AB1
\\AB2
\\ALEX
\\BUHCOMP
\\PC2
\\SA
\\SERVER
Команда выполнена успешно.

Обрабатывать содержимое этого текстового файла будем с помощью команды FOR с ключом /F:

FOR /F [«ключи»] %переменная IN (имя файла) DO команда [параметры]

Окончательный вид команды:

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

Предыдущий пример наводит на мысль, что можно было бы, например, создать пакетный файл для быстрого выключения всех компьютеров в локальной сети. Выключение производится утилитой стандартной утилитой Shutdown.exe (описание в разделе со списком команд CMD Windows – команда Shutdown ). Как и в предыдущем примере, сначала создается файл со списком компьютеров на основе сетевого окружения, а затем выполняется их поочередное выключение, при условии, что выключаемым компьютером не является ”свой”, на котором выполняется данный командный файл. Содержимое файла:

Командный файл должен выполняться в контексте учетной записи пользователя с правами администратора по отношению к выключаемым компьютерам. Имя домена или рабочей группы задается в строке:
set MyDomain=

В реальной жизни из списка выключаемых компьютеров нужно исключить несколько штук, для чего удобно использовать команду FIND в цепочке с net.exe в скрипте формирования списка на основе сетевого окружения. Данная команда используется для поиска строк в текстовом файле по шаблону. Ключ /V используется для поиска строк не совпадающих с шаблоном. Для выключения компьютеров, исключая server1. server4 удобно использовать такой вариант:

Поиск в локальной сети включенных компьютеров.

В данном примере речь идет о создании командного файла, позволяющего «собрать» список IP-адресов узлов локальной сети, включенных на данный момент времени. Ничего принципиально нового в плане создания командных файлов здесь нет, но тем не менее, задача поиска включенных узлов в локальной сети встречается довольно часто, и решить ее описанными выше способами, с использованием ping.exe и net view удается далеко не всегда, поскольку в современных версиях операционных систем семейства Windows настройки брандмауэров по умолчанию, задают довольно жесткие правила, блокирующие сетевые соединения извне, и ответы на эхо-запрос. Другими словами, включенный в локальную сеть компьютер ( или другое сетевое устройство ) может не отображаться в сетевом окружении Windows и не отвечать на эхо-запросы ( «пинги» ).

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

Для просмотра содержимого ARP-кэш можно воспользоваться командой

Пример отображения таблицы ARP:

адрес в Интернете Физический адрес Тип

192.168.0.1 00-1e-13-d6-80-00 динамический

192.168.0.3 60-eb-69-08-18-d2 динамический

адрес в Интернете Физический адрес Тип

192.168.234.255 ff-ff-ff-ff-ff-ff статический

224.0.0.22 01-00-5e-00-00-16 статический

224.0.0.252 01-00-5e-00-00-fc статический

239.255.255.250 01-00-5e-7f-ff-fa статический

Для понимания алгоритма опроса сети необходимо учесть следующее:

В таблице ARP будет не MAC-адрес сетевого адаптера, соответствующего IP-адресу узла с именем «yandex.ru», а MAC-адрес шлюза, через который выполнилась отправка IP-пакета для доставки получателю в «чужой» сети.

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

REM Переменная N задает количество опрашиваемых IP-адресов

rem Переменная IPMIN задает начальный IP-адрес. ( полный адрес состоит из IPTMP IPMIN )

REM результаты будут записаны в файл oprosipplus.txt

ECHO %DATE% Опрос ARP %N% адресов начиная с %IPTMP%%IPMIN% >> oprosipplus.txt

IF %IPMIN% GTR %N% GOTO ENDJOB

REM если « хвост » меньше N – продолжим опрос

REM выполним пинг и проверим наличие записи в ARP-кэш

REM Если запись есть — запишем это событие в журнал oprosipplus.txt

if %ERRORLEVEL%==0 Echo %IPFULL% >> OPROSipPLUS.txt

rem Сформируем следующий IP-адрес

set /A IPMIN=%IPMIN% + 1

rem Перейдем на выполнение следующего шага

rem Завершение работы

Работа с дисками, файлами и каталогами.

IF EXIST буква диска:\

Сначала создаем пустой файл:

copy nul tstdsk.txt

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

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

ERASE C:\TEMP\*.TMP
DEL /Q C:\TEMP\*.TMP

В масках файлов и каталогов возможно использование частичных имен

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

FOR /R C:\temp\ %%i IN (*.tmp) DO del %%i

При выполнении команды возможно использование подстановочных значений переменной цикла для получения имен дисков, папок, файлов и их характеристик. Полный список возможных значений в случае использования переменной с именем i

Возможно объединение нескольких операторов :

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

REM Обнулить / создать файл для хранения списка каталогов C:\dirlist.txt
copy nul C:\dirlist.txt
REM Занесем первой строкой в пустой файл что-то вроде заголовка списка
Echo *** Список папок на диске C: *** >> C:\dirlist.txt
REM Сделать текущим каталогом корневой каталог диска C:
cd c:\
REM Выполнить для корневого каталога и всех вложенных каталогов, команду ECHO с выдачей значения переменной %%

pi
for /R %%i in (C) DO (
ECHO Папка «%%

В результате выполнения этого командного файла в корне диска C: будет создан файл dirlist.txt, содержащий список каталогов диска.

Если в цикле команды FOR /R используются подстановочные значения переменной %%I, то в качестве набора (in) не стоит использовать символ точки.

REM подготовить каталог D:\MUSOR
if not exist D:\MUSOR md D:\MUSOR
REM удалить без подтверждения ( /Q) все файлы из каталога
del /Q D:\MUSOR\*.*
REM перейти в корень диска C:
cd c:\
REM Выполнить проверку наличия файлов с расширением *.log и скопировать их в
REM D:\MUSOR
for /R %%i in (c) DO (
if exist «%%

Практика использования FOR /R показала, что не стоит использовать в качестве набора для обработки символ «точка» ( конструкция in (.) ), поскольку при использовании подстановочных значений, можно получить возврат из текущего каталога на уровень выше. В данном примере в качестве набора in используется любой не служебный символ. Команду копирования ( copy ) можно заменить на команду перемещения файлов (MOVE), что приведет к удалению файлов источников после копирования в каталог D:\MUSOR.

Для копирования используется команда xcopy с ключами:

Подсказку по использованию команды XCOPY можно получить при вводе:

При обработке строки xcopy «%%

Похожий подход можно использовать для обнаружения и копирования исполняемых файлов (*.exe) из каталога временных файлов, задаваемого переменной TEMP. Бывает полезно для поиска вредоносных программ.

При работе с содержимым каталогов удобно использовать команды запоминания текущего каталога и перехода в новый PUSHD и команды восстановления ранее запомненного текущего каталога POPD

PUSHD «%TEMP%»
Echo Работаем в каталоге временных файлов
REM новый каталог стал текущим и можно использовать относительные пути
REM Выдать список exe-файлов текущего каталога (%TEMP%) командой DIR
DIR *.exe
REM Восстановить путь, запомненный командой PUSHD
POPD
)
Echo Вернулись в исходный каталог

Работа с графическими приложениями Windows.

start /MAX notepad.exe
start «This is CMD.EXE» /MIN cmd.exe
net send %COMPUTERNAME% NOTEPAD and CMD running.

После выполнения этого командного файла вы увидите стартовавшие, в развернутом окне (ключ /MAX) блокнот, в свернутом окне (ключ /MIN) командный процессор CMD.EXE и окно с сообщением net.exe. Стандартный заголовок окна cmd.exe заменен на текст «This is CMD.EXE». Обратите внимание на то что заголовок окна можно опускать, но особенность обработки входных параметров командой start может привести к неожиданным результатам при попытке запуска программы, имя или путь которой содержит пробел(ы). Например при попытке выполнить следующую команду:
start «C:\Program Files\FAR\FAR.EXE»
Из-за наличия пробела в пути к исполняемому файлу, строка для запуска FAR.EXE должна быть заключена в двойные кавычки, однако формат входных параметров для start предполагает наличие заголовка окна, также заключаемого в двойные кавычки, в результате чего «C:\Program Files\FAR\FAR.EXE» интерпретируется не как исполняемая программа, а как заголовок окна. Для того, чтобы подобного не случилось нужно использовать любой, пусть даже пустой, заголовок:
start «» «C:\Program Files\FAR\FAR.EXE»

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

Текущую версию программы можно скачать на странице разработчика CMDOW

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

Пример командного файла, закрывающего окна Проводника Интернет (IEXPLORE.EXE):

@echo off
:M1
for /f «tokens=1-2,8» %%a in (‘cmdow’) do (
if /i «%%c»==»IEXPLORE» if «%%b»==»1» cmdow %%a /END > nul
)
goto M1

Перекодировка текстовых файлов.

@echo off
chcp 866 >nul
for /f «tokens=*» %%i in (866.txt) do call:to1251 «%%i»
exit
:to1251
chcp 1251 >nul
echo %

1 >>1251.txt
chcp 866 >nul
exit /b

Своеобразным современным стандартом программы для перекодировки файлов считается, портированная из Unix утилита iconv (в составе библиотеки libiconv).

Скачать последнюю версию iconv для Windows (в составе пакета libiconv) можно здесь

Часто встречающиеся ошибки при написании командных файлов.

Rem Сменим текущий диск
D:
Rem перейдем в каталог SCRIPTS
CD D:\SCRIPTS
myprog.exe

Также для переходов по каталогам можно воспользоваться командами pushd и popd, описание и примеры использования которых имеются в разделе сайта со списком команд Windows.

Обычно это вызвано применением в командных файлах абсолютных значений для дисков, файлов и каталогов вместо переменных среды окружения. Вместо C:\WINDOWS правильнее использовать %SYSTEMROOT%, потому, что на другом компьютере система может быть установлена в другой каталог или на другой диск. Старайтесь вместо имени командного файла использовать переменную %0 и ее подстановочные варианты (%

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

Командная строка
DIR «%ProgramFiles%»
выполнится верно.

Старайтесь использовать команды Setlocal и Endlocal, чтобы не оставлять мусор из переменных, созданных или модифицированных командным файлом.

Командные файлы удобно использовать для выполнения каких-либо действий при регистрации пользователя в домене. Делается это с помощью вкладки Profile свойств пользователя домена.

Сами командные файлы должны находиться в сетевой папке Netlogon (WINDOWS\SYSVOL\ DOMAIN\SCRIPTS) контроллера домена.

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

Дополнительные материалы по командной строке Windows:

Раздел со списком команд CMD Windows. Имена большинства команд представляют собой ссылку на страницы с их описанием и примерами.

Настройка окна командной строки Windows. Малоизвестные возможности по изменению свойств консоли Windows.

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • командный язык операционной системы linux
  • командный интерфейс формы 1с программно
  • командные строки для windows 10 прикол
  • командная строка срок виндовс истек
  • командная строка с повышенными привилегиями windows 10 как включить

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии