Содержание

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

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

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

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

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

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

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

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

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

    — Выполнение только в заданный интервал времени.

    — Пример создания архива каталога пользователя.

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

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

    — Запуск и остановка служб Windows в командной строке.

    — Выдача на экран значения ERRORLEVEL.

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

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

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

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

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

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

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

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

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

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

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

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

    — Использование .bat и .cmd в сценариях регистрации пользователей.

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

    Командные файлы (пакетные файлы, скрипты, сценарии, ”батники”) — это обычные текстовые файлы с расширением .bat или .cmd

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

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

    Как уже упоминалось выше, командный файл – это обычный текстовый файл с набором команд, которые последовательно выполняются командным процессором CMD Windows. Строки командных файлов могут содержать специфические команды самого процессора команд (FOR, ECHO, REM и т.

п.) или имена исполняемых модулей (net.exe, regedit.exe, sc.exe). Командный процессор может быть запущен в интерактивном режиме через Пуск — Выполнить — CMD.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 0F — черные символы на белом фоне.

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

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

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

символов перенаправления

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

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

HELP > help.txt
При выполнении данной команды, в текущем каталоге будет создан файл с именем

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

Пример:

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

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

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

commands.txt. Фактически, указанный текстовый файл в данном случае является командным файлом.

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

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

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

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

/?

cmd.exe /?

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

& — одиночный амперсанд используется для разделения нескольких команд в одной командной строке.

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

&& — удвоенный амперсанд между двумя командами, означающий условное выполнение второй команды. Она будет выполнена, если код завершения (или код возврата) первой команды равен нулю, т.е. команда выполнена успешно.

Успешность выполнения команды определяется значением специальной переменной среды ERRORLEVEL.

команда1 && команда2 — выполняется команда1, а команда2 выполняется, только если первая была выполнена успешно.

|| — двойнвя вертикальная черта между командами. Означает условное выполнение второй команды. Если первая команда завершилась с кодом возврата не равным нулю (неуспешно), то выполняется команда, следующая за двойной вертикальной чертой.

команда1 || команда2 — если команда1 выполнена неуспешно, то запускается на выполнение

команда2

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

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

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

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

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

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

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

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

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

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

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

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

SET PATH=C:\Windows; C:\windows\system32
После выполнения данной команды, поиск исполняемых файлов будет выполняться в каталоге C:\Windows, и, если результат неуспешен, в C:\windows\system32

При необходимости выполнить программу, например, 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 PATH=%path%; C:\NewProgs

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

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

OS=Windows_NT- тип ОС

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

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% — отобразить значение переменной ERRORLEVEL, специальной переменной, значение которой является индикатором результата выполнения предыдущей команды.

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

Значения переменных, установленных командой SET действительны только для текущего сеанса командной строки. Для создания постоянно действующих пользовательских и системных переменных окружения используется специальная команда SetX, позволяющая записывать имена и значения переменных в реестр. Подробное описание команды 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 файла на экран
REM будет выводиться только результат их выполнения.
ECHO OFF
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3

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

rem ECHO ON включает режим вывода содержания строк командного rem файла на экран
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
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», то , выполнится командный файл 1.bat, и возврат в test.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) и многофункциональная оболочка пользователя Power Shell. Очевидно, не в последнюю очередь, это обусловлено простотой реализации и достаточной эффективностью командной строки для решения повседневных задач обслуживания системы. Ниже приведены простые примеры с комментариями, которые демонстрируют некоторые возможности и способы применения .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. Система выдаст сообщение, о том, что такого устройства или файла не существует, но пустой файл 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:\windows\system32) или любой другой, существующий в путях поиска, задаваемых значением переменной 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 Files\FAR. Имя архивного файла должно состоять из текущего времени (часы.минуты.секунды — ЧЧ.ММ.СС.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-10 день недели отсутствует, что несколько упрощает обработку структуры даты. Для создания нового каталога в командной строке используется команда
    MD имя каталога .
    В нашем примере, имя каталога нужно получить из текущей даты. Создаем в памяти временную переменную VDATE и присваиваем ей значение переменной окружения DATE, без первых 3-х символов (Пн и пробел) — 20.01.2016:

    set VDATE=%date:~3%

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

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

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

    Можно обойтись без лишних операторов, связанных с формированием значения переменной 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 files\far\*.*»

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

    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 files\far\*.*»

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

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

        Речь пойдет не о запуске командного файла в определенное время, а о выполнении какой-то его части только в определенный интервал времени, например, с 10:00 до 12:00. Решения данной задачи потребует сравнения текущего времени с указанным промежутком. Для примера, создадим командный файл, выполняющий запуск стандартного калькулятора Windows , только в том случае, если он выполняется в интервале времени от 10:00 до 12:00. Необходимо получить текущее время и выполнить проверку того, что оно не больше 12:00 и не меньше 10:00 .
    Команда IF позволяет выполнить сравнение строк при использовании формата:

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

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

    EQU — равно

    NEQ — не равно

    LSS — меньше

    LEQ — меньше или равно

    GTR — больше

    GEQ — больше или равно

    а ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Этот обычно используется для сравнения текстовых строк в форме строка1==строка2. Сравнения проводятся по общему типу данных, так что если строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа, после чего выполняется их сравнение. Следовательно, для решения нашей задачи нужно сравнить строку из первых двух символов значения переменной TIME ( чч:мм:сс ) с заданным диапазоном :

    REM Время меньше 12:00 — перейти на анализ второго условия, иначе — выход

    if %time:~0,2% lss 12 goto tst2

    exit

    :tst2

    Rem Время больше 10:00 — перейти к выполнению, меньше — завершить командный файл выполнив exit

    if %time:~0,2% gtr 10 goto excalc

    exit

    :excalc

    calc. exe

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

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

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

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

    @echo off
    rem Задается переменная FROM — откуда брать данные для архивирования
    set FROM=%USERPROFILE%\Мои Документы
    rem Задается переменная TO — куда помещать архивы
    set TO=C:\arhiv\Мои документы\%USERNAME%
    rem Создадим каталог ТО
    md «%TO%\»
    rem Сформируем имя подкаталога из текущей даты
    set VDATE=%date:~-10%
    rem Сформируем имя файла архива из текущего времени — 12:00:00. 99
    rem отбросим сотые доли секунды и заменим символ : на символ . Результат — 12.00.00

    set vtime=%TIME:~0,-3%
    set vtime=%vtime::=.%
    rem Создадим подкаталог для файла архива
    md «%TO%\%VDATE%»
    rem Команда для архивирования. Ключ -r нужен для архивирования с вложенными папками
    rem вариант для архиватора ARJ : arj.exe a -r «%TO%\%VDATE%\%VTIME%.arj» «%FROM%\*.*»
    rem При использовании архиватора RAR:
    rar.exe a -r «%TO%\%VDATE%\%VTIME%.rar» «%FROM%\*.*»

    Если у вас возникнут проблемы связанные с неверной кодировкой символов русского алфавита в именах файлов и каталогов, попробуйте воспользоваться командой CHCP для смены кодовой страницы
    chcp 866 — установить кодовую страницу 866 (DOS-кодировка)
    chcp 1251 — установить кодовую страницу 1251 (Windows-кодировка)

    Этот командный файл можно значительно сократить, убрав ненужные переменные VTIME и VDATE, которые в данном примере, используются лишь для того , чтобы скрипт имел более наглядный и простой для понимания вид. Кроме того, имеет смысл воспользоваться более современным бесплатным архиватором, например — 7-Zip.

    В операционных системах 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 :

    ECHO OFF
    echo WScript. Echo WeekDayName(Weekday(Now), True) > weekday.vbs
    for /f «Tokens=1*» %%i in (‘cscript /nologo weekday.vbs’) DO set DayName=%%i
    echo %DayName%
    REM Дальше можно использовать переменную DayName, а файл weekday.vbs — удалить
    REM ERASE dayname.vbs
    REM …

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

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

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

    Не секрет, что командные оболочки Unix/Linux значительно превосходит по своим возможностям командную строку Windows, поэтому, вполне понятно появление пакета UNIX Shell and Utilities для Windows NT и старше. Этот пакет представляет собой Windows-версии наиболее популярных утилит из среды Unix/Linux , которые могут выполняться как консольные команды в среде оболочки пользователя (в среде модуля sh.exe, входящего в пакет) или как исполняемые файлы в командной строке Windows. В набор входит более 200 программ от компании Mortice Kern Systems (MKS), рекомендуемых Microsoft в качестве средства миграции с Unix на Windows.

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

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

    touch.exe —help

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

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

    -a — Устанавливает время последнего доступа ( access )к файлу. Время последнего изменения не устанавливается, если явно не задан ключ -m ( modify )
    -c — Указывает утилите не создавать файл, если он не существует.
    -m — Устанавливает время последнего изменения файла.
    -r file — Использовать значения времени из файла, заданного аргументом file.
    -t time — Устанавливает время последнего изменения (модификации) и доступа в соответствии с указанным форматом date_time.
    Формат даты, указанный в ключе -t задается в соответствии с шаблоном [[СС]YY] MMDDhhmm[. SS]:
    СС — первые две цифры года (век).
    YY — последние две цифры года.
    MM — двузначный номер месяца.
    DD — двузначный номер дня.
    hh — значение часов даты.
    mm — значение минут даты.
    SS — значение секунд даты.

       

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

    touch.exe в командной строке Windows:

    touch C:\folder\myfile.txt — изменить время доступа и модификации файла C:\folder\myfile.txt на текущее. Если файл не существует, он будет создан с нулевой длиной и текущим временем создания, модификации и доступа.
    touch C:\folder — изменить время доступа и модификации папки C:\folder на текущее.
    touch -f C:\ntldr C:\folder — изменить время доступа и модификации папки C:\folder на время, установленное для файла C:\ntldr
    touch -t 199803080102.00 C:\folder — установить для существующей папки «C:\folder» значение даты и времени модификации — 1998г., 8 марта, 1 час : 2 минуты :00 секунд
    touch -t 1112. 30 C:\folder — установить для существующей папки «C:\folder» значение даты и времени модификации — текущая дата, 11 час : 12 минут :30 секунд
    touch -a -t 2222.20 C:\folder — изменить только время доступа, время модификации не изменяется.

        Кроме утилиты touch для модификации времени файлов (но не папок) можно воспользоваться простой и удобной программой Юрия Усманова setdate . Скачать, архив zip размером около 16Кб).
    Примеры использования:

    setdate.exe -c C:\1.txt 22.11.2016 — установить для файла C:\1.txt дату создания 22.11.2016
    setdate.exe -m C:\1.txt 22.11.2016 — установить для файла C:\1.txt дату изменения (модификации) 22.11.2016
    setdate.exe -a C:\1.txt 22.11.2016 — установить для файла C:\1.txt дату доступа 22.11.2016
    setdate.exe -d C:\1.txt 22.11.2018 — установить для файла C:\1.txt все даты 22.11.2018

    В версиях Windows 10, вышедших после 2018 года существует возможность использования стандартной подсистемы Windows для Linux (Windows Subsystem for Linux, WSL). Пользователь может установить в среде Windows один из дистрибутивов Linux без каких-либо дополнительных средств виртуализации и пользоваться обеими операционными системами одновременно. С каждым новым выпуском Windows 10 подсистема WSL становится все более функциональной и удобной. Подробнее — Установка и примеры использования подсистемы WSL в Windows 10

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

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

    В операционных системах Windows 7 и старше, утилита at.exe присутствует, но признана устаревшей и нерекомендуемой к использованию в будущем. Вместо нее рекомендуется использовать schtasks.exe, которая обладает большими возможностями, но сложнее в использовании. Примеры использования современной утилиты имеются в разделе со списком команд, а на данной странице, все же воспользуемся простой классической AT. Команда AT предназначена для запуска команд и программ в указанное время по определенным дням. Для использования команды AT необходимо, чтобы была запущена служба планировщика заданий (в современных ОС Windows, по умолчанию эта служба запущена всегда). .

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

    \\имя_компьютера — имя удаленного компьютера. Если этот параметр опущен, задача относится к локальному компьютеру.
    код — порядковый номер запланированной задачи. Указывается если нужно отменить уже запланированную задачу с помощью ключа /delete.
    /delete — отменить запланированную задачу. Если код задачи опущен, отменяются все задачи, запланированные для указанного компьютера.
    /yes — не будет запроса на подтверждение при отмене всех запланированных задач.
    время — Время запуска команды.
    /interactive — интерактивный режим, разрешение взаимодействия задачи с пользователем. Задачи, запущенные без этого ключа невидимы для пользователя компьютера.
    /every:день[,…] Запуск задачи осуществляется по указанным дням недели или месяца. Если дата опущена, используется текущий день
    месяца.
    /next:день[,…] Задача будет запущена в следующий указанный день недели (например в следующий четверг). Если дата опущена, используется текущий день месяца.
    «команда» — Команда или имя командного файла.

    Примеры использования:
  • Просмотр списка запланированных задач:
  • AT

  • — Удаление уже спланированных задач:
  • AT 3 /DELETE — удаление задачи с номером 3
    AT /DELETE /YES — удаление всех задач без запроса подтверждения

  • Создание интерактивных задач
  • at \\SERVER 15:21 /interactive notepad. exe — на компьютере SERVER в 15:21 запустить видимое для пользователя приложение «Блокнот» (notepad.exe)
    AT 15:30 /interactive regedit.exe — в 15:30 запустить видимый редактор реестра на своем компьютере.

  • Аналог «будильника» — всплывающие окна с текстом, напоминающие о необходимости каких-либо действий. Для посылки сообщения удаленному пользователю в операционных системах Windows 2k/XP используется утилита NET.EXE в режиме отправки сообщения SEND. На компьютерах должна быть запущена служба сообщений, иначе NET SEND не будет работать. В ОС Windows Vista и более поздних, отправку сообщений нужно выполнять с помощью утилиты msg.exe, поскольку команда net send в этих ОС больше не поддерживается. Описание команды MSG примерами.
  • AT 17:30 net.exe send COMP Пора домой — в 17:30 отправить сообщение «Пора домой» пользователю компьютера COMP
    AT 17:30 msg. exe * /server:COMP Пора домой — то же, что и в предыдущем случае, но с использованием команды msg
    AT 17:39 msg.exe * Пора домой — запланировать на 17:39 отправку текстового сообщения «Пора домой» всем пользователям данного компьютера в среде Windows Vista / 7 / 8
    AT \\PROXY 15:30 net.exe send COMP2 Test Message — создать задание на компьютере PROXY, чтобы в 15:30 им было отправлено сообщение «Test Message» на компьютер COMP2
    AT 15:45 net.exe send имя своего компьютера Task Scheduler test — в 15:45 на своем компьютере показать сообщение «Task Scheduler test»

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

    Создаваемые командой AT задачи доступны для обработки в среде пользователя с помощью оснастки «Назначенные задания» Windows.
    Пуск — Панель управления — Назначенные задания — здесь можно просматривать, изменять и удалять созданные командой AT задачи. В Windows Vista / 7-8 используется меню — Панель управления — Администрирование — Планировщик заданий.

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

    &nbsp

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

    NET.EXE STOP

    NET.EXE START

    В качестве параметра команды можно использование как короткое, так и полное имя службы («Dnscache» — короткое, «DNS-клиент» — полное имя службы). Имя службы, содержащее пробелы заключается в двойные кавычки. Пример перезапуска службы «DNS-клиент»

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

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

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

    net stop Dnscache

    net start Dnscache

    Полное имя службы можно скопировать из «Панель управления» — «Администрирование» — «Службы» — Имя службы — «Свойства» — «Выводимое имя».
    То же самое, но в режиме командной строки: «Пуск» — «Выполнить» — services.msc.

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

        Для работы с системными службами в Windows XP и старше, можно использовать утилиту sc.exe, позволяющую не только остановить/запустить службу, но и опросить ее состояние, параметры запуска и функционирования, изменить конфигурацию, а также работать не только с системными службами, но и с драйверами. При наличии соответствующих прав, можно управлять службами не только на локальной, но и на удаленной машине. Примеры:
    sc.exe stop DNSCache — остановить службу DNSCache на локальном компьютере.
    sc \\192.168.0.1 query DNSCache — опросить состояние службы DNSCache на компьютере c IP-адресом 192.168.0.1
    sc \\COMP start DNSCache запустить службу DNSCache на компьютере COMP
    Подсказку по работе с утилитой можно получить, введя:
    sc /?

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

    Выдача значения переменной ERRORLEVEL .

        Этот простенький командный файл выдаст на экран значение переменной 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%

    Примеры запуска:

    echoEL.bat NET SHARE     — будет выполнена команда NET SHARE (отобразить список разделяемых сетевых ресурсов) и выдан код ERRORLEVEL
    echoEL.bat NET SHARE X»=»C:\     — будет выполнена команда NET SHARE X:=C:\ (создать разделяемый сетевой ресурс с именем X, и путем в корневой каталог диска C:) Обратите внимание на то, что знак равенства = заключен в двойные кавычки.
        Перечисленные выше варианты задают корректную командную строку. Для закрепления навыков, попробуйте выполнить командный файл с командой Net Send в среде Windows 7-10 (где SEND — неверный параметр для NET. EXE), с командой, в которой присутствуют ошибочные параметры (например – net share abc) или вообще задайте несуществующую команду и вы увидите, каким образом меняется значение переменной ERRORLEVEL, в зависимости от причины, вызвавшей невозможность выполнения команды.

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

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

    set /p pset=»Enter password — »
    echo Password is — %pset%

    Недостатком данного способа является невозможность продолжения выполнения командного файла при отсутствии ответа пользователя, поэтому очень часто, вместо команды set используются другие средства, в том числе и сторонние программы. В составе операционных систем семейства Microsoft Windows имеется утилита командной строки CHOICE позволяющая довольно просто реализовать диалог с пользователем и проанализировать введенные им данные, однако в разных версия ОС утилита может присутствовать в стандартной поставке ( Windows 7 ) или входить в наборы дополнительных программных инструментов ( Resource Kit Windows XP ) Простейшая версия — CHOICE.COM Скачать (1.7кб), работающая во всех ОС семейства Windows.
    CHOICE выдает пользователю текстовое сообщение и ожидает выбора одного из заданных вариантов ответа (нажатия клавиш на клавиатуре). По результатам выбора формируется переменная ERRORLEVEL, значение которой равно порядковому номеру выбора. По умолчанию вариантов выбора два — Y или N. Если ответ равен Y — то ERRORLEVEL=1, если N — то ERRORLEVEL=2. Можно использовать более 2-х вариантов выбора и есть возможность задать выбор по умолчанию, когда пользователь за определенное время не нажал ни одной клавиши. Формат командной строки:

    CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
    /C[:]choices — определяет допустимые варианты выбора. Если не задано — YN
    /N — не выдавать варианты выбора.
    /S — строчные и заглавные буквы отличаются.
    /T[:]c,nn — Выбор по умолчанию равен «c» через «nn» секунд
    text — Строка текста выводимая в качестве запроса

    Создадим командный файл, демонстрирующий использование CHOICE. Он будет реагировать на нажатие клавиш «1»,»2″,3″ и «0» . При нажатии «0» выполняется завершение, а при нажатии остальных — сообщение пользователю. Если в течении 10 секунд ничего не нажато — завершение.

    @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 и использовать в ваших командных файлах.

    : SLEEP N     — где N — количество секунд для задержки.

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

    choice.com /T:y,10 /N     — задержка на 10 секунд

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

    ping 127.0.0.1 -n 30 > nul     — даст задержку на 30 секунд
    Перенаправление вывода команды ping на фиктивное устройство nul ( > nul ) позволяет убрать сообщения утилиты ping.exe с экрана.

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

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

        Для проверки доступности сетевого узла чаще всего используется упоминаемая выше стандартная утилита ping.exe. Утилита выполняет отправку ICMP-пакета на проверяемый узел (эхо-запрос) и ожидает ответный пакет (эхо-ответ). К сожалению, результат проверки доступности узла не в полной мере коррелируется со значением переменной ERRORLEVEL и может быть получен только из данных стандартного вывода ping. В разных версия ОС Windows, утилита ping.exe может устанавливать нулевое значение ERRORLEVEL даже при недоступности узла, но при наличии в командной строке верных параметров командной строки. Иными словами, в некоторых случаях, требуемый сценарием результат выполнения определенной команды трудно, или вообще нельзя определить по значению переменной ERRORLEVEL, и приходится анализировать более достоверные признаки успешного или неуспешного выполнения команды, например, наличие определенного текста в ее выводимых сообщениях.

    Если внимательно посмотреть на сообщения программы ping.exe при опросе доступного и недоступного узла, то можно заметить, что они значительно отличаются :
    ping 456.0.0.1 — ping на несуществующий адрес

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

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

    ping yandex. ru — ping на адрес узла yandex.ru

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

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

    Таким образом, для решения задачи определения доступности узла в командном файле, достаточно проанализировать характерные слова в выводе ping.exe при успешном ответе. Наиболее характерно в данном случае наличие слова TTL. Оно никогда не встречается при возникновении ошибки и состоит всего лишь из символов английского алфавита. Для поиска «TTL» в результатах ping.exe удобнее всего объединить ее выполнение в цепочку с командой поиска строки символов FIND.EXE (конвейер ping и find). Справку по использованию можно получить командой

    find /?

    Поиск текстовой строки в одном или нескольких файлах.
    FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «строка» [[диск:][путь]имя_файла[ …]]
    /V Вывод всех строк, НЕ содержащих заданную строку.
    /C Вывод только общего числа строк, содержащих заданную строку.
    /N Вывод номеров отображаемых строк.
    /OFF[LINE] Не пропускать файлы с установленным атрибутом «Автономный».
    /I Поиск без учета регистра символов.
    «строка» — Искомая строка, обязательно в двойных кавычках.
    [диск:][путь]имя_файла — Один или несколько файлов, в которых выполняется поиск.

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

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

    ping -n 1 COMPUTER | find /I «TTL» > nul
    if %ERRORLEVEL%==0 goto LIVE
    ECHO computer не доступен
    подпрограмма обработки недоступного состояния

    Exit
    :LIVE — начало подпрограммы обработки состояния доступности узла
    . ..

    В конвейер добавлена команда перенаправления стандартного вывода на фиктивное устройство nul, т.е. подавление вывода. Ключ -n 1 задает однократный опрос узла COMPUTER для ping.exe.

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

        Так же, как и в предыдущем примере, для определения версии операционной системы в процессе выполнения командного файла, можно воспользоваться поиском определенных фрагментов текста в результатах выполнения команд, отображающих сведения о системе. Например, во всех операционных системах семейства Windows ( и даже в DOS ) существует специальная команда VER, предназначенная для отображения сведений о версии ОС. В результате выполнения команды, например, в среде Windows XP, отображается текст:

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

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

    Microsoft Windows [Version 6.1.7600]

    В среде Windows 10:

    Microsoft Windows [Version 10. 0.14393]

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

    @echo off

    set curr_OS=

    REM

    ver | find /i «5.0»

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

    REM

    ver | find /i «5.1»

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

    REM

    ver | find /i «5.2.3»

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

    REM

    ver|find /i «6.0»

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

    REM

    ver | find /i «6.1»>nul

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

    REM

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

    echo Текущая версия ОС — %curr_OS%

    Можно также воспользоваться более информативным выводом команды NET CONFIG WORKSTATION. При выполнении в среде Windows XP вывод команды представляет собой следующий текст:

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

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

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

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

    NetbiosSmb (000000000000)

    NetBT_Tcpip_{ F53DEAF8 — 0AF5 — 4875 — B565 — 8ED55C594769} (000D87009D28)

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

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

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

    Домен входа             Mydomain

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

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

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

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

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

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

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

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

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

    NetBT_Tcpip_{ F53DEAF8 — 0AF5 — 4875 — B565 — 8ED55C594769} (000D87009D28)

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

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

    Домен входа         Mydomain

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

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

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

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

    Как видим, строка Версия программы . . . тоже может быть использована для определения версии Windows, в среде которой выполняется командный файл. Кроме того, в результатах выполнения команды NET CONFIG WORKSTATION для серверных версий Windows всегда присутствует слово Server.

    @echo off

    set curr_OS=

    REM

    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

    REM

    net config workstation | find /i «Server 2003»

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

    REM

    net config workstation|find /i «Windows Vista»

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

    REM

    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

    echo %curr_OS%


    Кроме рассмотренных способов можно применить еще множество, в том числе, используя утилиту редактирования реестра в командной строке reg. |Find «REG_SZ»‘) Do Set OS1=%%B

    @Echo %OS1%

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

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

    В операционных системах Windows XP и старше имеется стандартная утилита для получения списка процессов, выполняющихся в системе tasklist.exe. Она обладает очень неплохими возможностями и может использоваться для поиска выполняющихся приложений как на локальном, так и удаленном компьютере. Также, можно воспользоваться вспомогательной утилитой PSList.exe из пакета PSTools от Microsoft Sysinternals. Обе утилиты можно использовать для поиска приложений, выполняющихся на локальном или удаленном компьютере, но PSlist имеет более простой функционал, менее известна среди компьютерных специалистов и выбрана в качестве средства решения поставленной задачи. Для того, чтобы использовать стандартную утилиту tasklist.exe, потребуются совсем незначительные переделки, связанные с различием в синтаксисе команд.

    Задача заключается в том, что нужно создать командный файл, который бы обнаруживал в локальной сети компьютеры с выполняющейся программой, имя которой (начальная часть имени), задается в качестве параметра при запуске, например, game . При обнаружении, например, требуется передать сообщение пользователю компьютера ADMINCOMP и обнаруженное приложение принудительно завершить.

    Для поиска будем использовать утилиту Pslist.exe и анализировать ее код возврата. Значение переменной ERRORLEVEL равное нулю означает, что утилита обнаружила на удаленном компьютере процесс, удовлетворяющий условиям поиска. Имя процесса для поиска будем задавать в качестве параметра при запуске командного файла. Присвоим нашему командному файлу имя psl.bat. Запуск с параметром будет выглядеть следующим образом:
    psl.bat game

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

        На следующем шаге нужно обеспечить последовательное формирование IP-адресов компьютеров для командной строки утилиты PSlist. В качестве простого примера, можно воспользоваться присвоением временной переменной значения постоянной составляющей адреса для локальной сети (например — 192.168.0.) и вычисляемого значения младшей части (например, в диапазоне 1-254).

    Например, нам необходимо просканировать компьютеры в диапазоне адресов:
    192.168.0.1   —   192.168.0.30:

    set IPTMP=192.168.0. — старшая часть адреса
    set /A IPLAST=1 — младшая часть. Ключ /A означает вычисляемое числовое выражение
    set IPFULL = %IPTMP%%IPLAST% — значение полного IP-адреса.

        Командная строка для PSlist будет выглядеть cледующим образом:
    pslist \\%IPFULL% %1
        Теперь осталось только циклически запускать PSlist, прибавляя в каждом цикле единицу к младшей части адреса, пока ее значение не достигнет 30 и анализировать значение ERRORLEVEL после выполнения. Для анализа результата будем выполнять переход командой:
    GOTO REZULT%ERRORLEVEL%
    обеспечивающей переход на метку REZULT0 при обнаружении процесса и на REZULT1 — при его отсутствии.

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

    @echo off
    if «%1» NEQ «» GOTO PARMOK
    ECHO Нужно задать имя процесса для поиска
    exit
    :PARMOK
    set IPTMP=192.168.0.
    rem Зададим начальное значение » хвоста » IP- адреса
    set /A IPLAST=1
    rem M0 — метка для организации цикла
    :M0
    rem Переменная IPFULL — полное значение текущего IP-адреса
    set IPFULL = %IPTMP%%IPLAST%
    rem Если » хвост «больше 30 — на выход
    IF %IPLAST% GTR 30 GOTO ENDJOB
    pslist \\%IPFULL% %1
    GOTO REZULT%ERRORLEVEL%
    :REZULT0
    rem Если найдено приложение- отправим сообщение на ADMINCOMP
    net send ADMINCOMP Запущено %1 — %IPFULL%
    rem И завершим приложение с помощью PSkill
    pskill \\%IPFULL% %1
    :REZULT1
    rem Сформируем следующий IP-адрес
    set /A IPLAST=%IPLAST% + 1
    rem Перейдем на выполнение следующего шага
    GOTO M0
    rem Завершение работы
    :endjob
    exit

        В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist. exe и PSkill.exe должны быть доступны в путях поиска исполняемых файлов, например в каталоге WINDOWS\SYSTEM32. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам. И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие имя пользователя и пароль. В качестве альтернативы утилите PSKill.exe можно воспользоваться стандартной Taskkill.exe. Использование стандартных утилит tasklist.exe и taskkill.exe ограничено тем фактором, что их параметры командной строки не допускают возможности задания имени пользователя и пароля для доступа к удаленному компьютеру.

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

        В предыдущем примере использовался прямой перебор IP-адресов компьютеров в локальной сети, что не всегда эффективно, поскольку в процедуру опроса могут быть вовлечены и выключенные компьютеры. Решим задачу другим способом — создадим текстовый файл со списком компьютеров и опросим их по этому списку.
        Список можно получить из сетевого окружения с использованием команды:
    net.exe view > comps.txt
    После выполнения такой команды файл comps.txt будет содержать список следующего вида:

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

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

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

        Данная команда позволяет получить доступ к строкам в текстовом файле с использованием ключей:
    skip=n                 — пропустить n строк от начала файла (в нашем примере — 4 строки)
    eol=&nbsp&nbsp — не использовать строки, начинающиеся с заданного символа. (в нашем случае — пропустить последнюю строку, начинающуюся с кириллического символа «К» — «Команда выполнена успешно»
    tokens=n             — брать для обработки n-е слово в строке (в нашем случае — 1-е слово)

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

    FOR /F «eol=К skip=4 tokens=1 » %%I IN (comps.txt) DO (
    pslist.exe -u admin -p pass %%I %1
    IF NOT ERRORLEVEL 1 net.exe send ADMINCOMP %%i %1
    )

           Обратите внимание — в пакетных файлах для переменных команды FOR используется два знака процента (запись %%переменная вместо %переменная) и имена переменных учитывают регистр букв (%i отличается от %I).
            Работать это будет следующим образом — пропускаются первые 4 строки текстового файла со списком компьютеров, и далее в цикле переменной I присваивается значение первого слова (текст от начала строки до разделителя — пробела), выполняется утилита PSlist.exe, для которой в качестве имени компьютера используется значение этой переменной. Если ERRORLEVEL менее 1 — задача с искомым именем присутствует в списке процессов и выполняется отправка сообщения с помощью NET SEND.
            Окончательное содержимое командного файла:

    @echo off
    if «%1» NEQ «» GOTO PARMOK
    ECHO Нужно задать имя процесса для поиска
    exit
    :PARMOK
    REM
    REM Создадим текстовый файл comps.txt со списком компьютеров с помощью NET.EXE VIEW
    net view /DOMAIN:MyDomain > comps.txt
    REM
    REM FOR /F «параметры» — использование данных из файла
    REM eol=К — не использовать строки, начинающиеся с «К» — «Команда выполнена успешно»
    REM skip=4 — пропустить первые 4 строки в файле
    REM tokens=1 — брать для обработки 1-е слово в строке
    REM
    FOR /F «eol=К skip=4 tokens=1 » %%i in (comps.txt) do (
    pslist.exe -u admin -p pass %%i %1
    IF NOT ERRORLEVEL 1 net.exe send %COMPUTERNAME% Компьютер — %%i процесс — %1
    )

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

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

    rem @echo off
    REM Здесь нужно задать
    REM имя домена или рабочей группы для которых строится список машин для выключения
    set MyDomain=имя домена
    REM
    REM Создадим текстовый файл comps.txt со списком компьютеров с помощью NET VIEW
    net view /DOMAIN:%MyDomain% > comps.txt
    REM
    REM FOR /F «параметры» — использование данных из файла
    REM eol=К — не использовать строки, начинающиеся с «К» — «Команда выполнена успешно»
    REM skip=4 — пропустить первые 4 строки в файле
    REM tokens=1 — брать для обработки 1-е слово в строке
    FOR /F «eol=К skip=4 tokens=1 » %%i in (comps. txt) do (
    REM Свой компьютер выключать не будем
    REM Если имя компьютера не равно COMPUTERNAME — выключаем
    IF /I %%i NEQ %COMPUTERNAME% shutdown -f -s -t 0 -m %%i
    )

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

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

    net view | find «\\» | find /v «сервер1» | find /v «сервер2» | find /v «сервер3» | find /v «сервер4» > comps. txt
    FOR /F «tokens=1 » %%i in (comps.txt) do shutdown.exe -f -s -m %%i

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

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

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

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

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

    arp -a — отобразить все записи в таблице ARP

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

    Интерфейс: 192.168.0.29 — 0xa

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

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

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

    . . .

    Интерфейс: 192.168.234.1 — 0xf

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

    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 статический

    Как видно из приведенной таблицы, например IP – адресу 192.168.0.1 соответствует физический адрес сетевого адаптера, равный 00-1e-13-d6-80-00 . Если же сетевой адаптер с данным адресом будет недоступен, то такой записи в таблице не будет.

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

    Разрешение адресов ARP используется только при передаче данных по IP-протоколу в пределах сегмента локальной сети, задаваемого маской. Так, например, для примера с IP адресом 192.168.0.1 и маски 255.255.255.0 это будет диапазон IP от 192.168.0.1 до 192.168.0.254. Обращение же к любому другому адресу будет выполняться через устройства маршрутизации. Т.е. при выполнении команды

    ping yandex.ru

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

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

    @ECHO OFF

    REM Устанавливаем значение переменной IPTMP — постоянной части IP-адреса

    set IPTMP=192.168.213.

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

    set N=128

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

    set /A IPMIN=1

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

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

    rem M0 — метка для организации цикла

    :M0

    rem Переменная IPFULL — полное значение текущего IP-адреса, состоящего из IPTMP И IPMIN

    set IPFULL=%IPTMP%%IPMIN%

    rem Если » хвост «больше N — на завершение работы

    IF %IPMIN% GTR %N% GOTO ENDJOB

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

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

    ping -n 1 %IPFULL%

    arp -a | find /I «%IPFULL%»

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

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

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

    set /A IPMIN=%IPMIN% + 1

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

    GOTO M0

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

    :endjob

    exit

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

        Задача — определить буквы дисков, присутствующих в системе и записать результат в файл с именем tstdsk.txt текущего каталога. Можно воспользоваться выполнением команды IF EXIST в цикле FOR для набора из букв латинского алфавита, т.е для каждой буквы диска проверить наличие корневого каталога командой

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

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

    copy nul tstdsk.txt

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

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

    copy nul tstdsk.txt
    for %%i in (a,b,c,d,e,f,g,h ,i,j,k,l,m,n,o,p,q,r ,s,t,u,v,w,x,y,z) DO (
    if exist %%i:\ echo Disk %%i: exist >> tstdsk.lst
    )

    Для обработки файлов определенного типа, например любых с расширением .tmp используется маска — *.tmp . Так, для удаления всех файлов *.tmp из каталога C:\TEMP можно воспользоваться командой ERASE (или DEL )

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

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

    ERASE C:\TEMP\A*.TMP — удалить все файлы с расширением .TMP , имя которых начинается с символа «A»
    DIR *u*.* — выдать список всех файлов и подкаталогов текущего каталога, в имени которых содержится символ «u»
    DIR C:\*t.* — выдать список всех файлов и каталогов в корне диска C: , имя которых заканчивается символом «t»

    Задача — получить список всех каталогов с подкаталогами на логическом диске и записать результат в текстовый файл. Для рекурсивной обработки каталогов диска будем использовать команду FOR /R

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

    Ключ /R означает выполнение команды для каталога [диск:]путь. Если в команде путь не задан, то обработка выполняется для текущего каталога.

    Простой пример удаления файлов с расширением .tmp из каталога C:\TEMP:

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

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

    %%~i — из переменной %i удаляются обрамляющие кавычки («)
    %%~fi — переменная %i расширяется до полного имени файла
    %%~di — из переменной %i выделяется только имя диска
    %%~pi — из переменной %i выделяется только путь к файлу
    %%~ni — из переменной %i выделяется только имя файла
    %%~xi — из переменной %i выделяется расширение имени файла
    %%~si — полученный путь содержит только короткие имена
    %%~ai — переменная %i принимает значение атрибутов файла
    %%~ti — переменная %i принимает значение даты /времени файла
    %%~zi — переменная %i принимает значение размера файла

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

    %%~dpi — переменная %i заменяется только на имя диска и путь
    %%~nxi — переменная %i заменяется только на имя файла и его расширение
    %%~fsIi — переменная %i заменяется только на полный путь с краткими именами
    %%~ftzai — переменная %I заменяется на строку, выдаваемую командой DIR

    Значение переменной %%pi внутри цикла команды FOR /R будет последовательно принимать значения путей папок, начиная с заданного набора [диск:]путь.

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

    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 Папка «%%~pi» >> C:\dirlist.txt
    )

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

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

    Задача — найти на диске файлы с расширением .log и скопировать их в каталог на другом логическом диске — D:\MUSOR

    Желательно проверить наличие каталога D:\MUSOR и при необходимости, создать его командой md, а также удалить из него все файлы, если они существуют, командой del . Затем выполнить переход в корневой каталог диска C: и выполнить в цикле команды FOR поиск файлов по маске *.log во всех подкаталогах.

    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 «%%~dpi*.log» copy «%%~dpi*.log» «D:\MUSOR\*.*»
    )

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

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

    @echo off
    REM подготовить каталог D:\MUSOR — удалить его и его подкаталоги командой RD
    RD /S /Q D:\MUSOR
    REM Создадим каталог заново
    MD D:\MUSOR
    REM Задаем начальную папку для обработки в команде FOR — C:\
    for /R C:\ %%i in (C) DO (
    xcopy «%%~dpi*. log» «D:\MUSOR%%~pi*.*» /H /R /Q /Y
    )

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

    /H — копировать скрытые файлы.
    /R — разрешение на замену файлов с атрибутом «Только чтение»
    /Q — не отображать имена копируемых файлов
    /Y — разрешать перезаписывать существующие файлы.

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

    help xcopy
    xcopy /?

    При обработке строки xcopy «%%~dpi*.log» «D:\MUSOR%%~pi*.*» /H /R /Q /Y в цикле FOR, в качестве источника копирования будет выбираться C:\текущий путь\*.log а в качестве приемника — D:\MUSOR\текущий путь\имя копируемого файла

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

    rem @echo off
    REM подготовить каталог D:\MUSOR — удалить командой RD
    RD /S /Q D:\MUSOR
    REM Создадим каталог заново
    MD D:\MUSOR
    REM Задаем начальную папку для обработки (%TEMP%) и выполняем FOR
    for /R «%TEMP%» %%i in (C) DO (
    xcopy «%%~dpi*. exe» «D:\MUSOR%%~pi*.*» /H /R /Q
    )

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

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

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

        Допустим, вам нужно из одного и того же командного файла запустить notepad.exe и cmd.exe. Если просто вставить строки
    notepad.exe
    cmd.exe
    то после запуска notepad.exe выполнение командного файла приостановится и пока не будет завершен notepad, cmd. exe не запустится. Самый простой способ обойти эту проблему — использовать стандартную команду Windows start. Полную справку по использованию можно получить по:
    start /?
    Попробуйте создать командный файл следующего содержания:

    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.zip, используемая при написании этой статьи. ZIP-архив, закрытый паролем novirus

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

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

    Cmdow.exe — крошечная утилита, работающая во всех версиях Windows и не требующая установки. Позволяет получить список окон, перемещать, изменять размеры, переименовывать, сворачивать/разворачивать, активировать/деактивировать, закрывать, скрывать окна приложений и многое другое. Справку можно получить по команде:
    cmdow /?
    Используется около 30 ключей. Описание на русском языке найдете здесь. Некоторые примеры:

  • Получение информации об окнах:
  • cmdow.exe или cmdow.exe > wins.txt — выдать информацию обо всех окнах на экран или в файл wins.txt
    cmdow /T — выдать информацию об окнах, отображаемых на панели задач рабочего стола.
    Информация содержит колонки:

    Handle — дескриптор окна — шестнадцатеричное число, связанное с данным окном.
    Lev — уровень окна. Приложение может быть многооконным с несколькими уровнями окон.
    Pid — идентификатор процесса, породившего окно.
    -Window status- — состояние окна (видимое — Vis, скрытое — Hid, активное — Act, свернутое — Min и т.п.
    Image — программа вызвавшая окно.
    Caption — название окна

    Манипулировать окнами можно используя название окна, или его дескриптор. Если название окна содержит пробелы, то оно заключается в двойные кавычки. Если имеются русские буквы, то должна использоваться DOS-кодировка. Символ @ используется для указания текущего окна. Иногда проще использовать дескриптор окна, а не его название. Полезным может быть и использование команды поиска по строке find.exe, выполняемой в цепочке с cmdow:
    cmdow.exe | find.exe /I «hid» > wins.txt — в файл wins.txt попадут только строки содержащие шаблон «hid» и мы получим список скрытых окон.
    cmdow.exe | find.exe /I «MyIE» > wins. txt — список окон приложения MyIE

  • Манипулирование окнами.
  • Если вы хотите, чтобы ваш командный файл выполнялся скрытно, добавьте в него строку:
    cmdow @ /HID — скрыть текущее окно
    Ниже командный файл с комментариями, демонстрирующий возможности работы cmdow:

    @ECHO OFF
    REM Свернуть все окна — /MA
    cmdow /MA
    REM запустить cmd.exe с заголовком окна MyCMD
    start «MyCMD» cmd.exe
    REM ждать 5 секунд
    call :wait5s
    REM
    :M1
    REM Скрыть окно MyCMD
    cmdow MyCMD /hid
    call :wait5s
    REM Сделать видимым
    cmdow MyCMD /vis
    call :wait5s
    REM Переместить в верхний левый угол экрана и развернуть окно
    cmdow MyCMD /MOV 0 0
    cmdow Mycmd /max
    call :wait5s
    REM Изменить размер на 320 х 240 и переместить вправо на 320 точек
    cmdow MyCMD /MOV 320 0 /SIZ 320 240
    call :wait5s
    REM Переместить окно в точку с координатами 320 x 240 и изменить размер на 350×50
    cmdow MYCMD /MOV 320 240 /SIZ 350 50
    call :wait5s
    REM Восстановить окно
    cmdow MYCMD /RES
    call :wait5s
    REM Восстановить и сделать активным окно этого командного файла
    cmdow @ /RES /ACT
    ECHO Для завершения нажмите CTRL-C (CTRL-Break)
    call :wait5s
    call :wait5s
    REM Зацикливание — переход к метке :M1
    GOTO M1
    REM Подпрограмма задержки на 5секунд
    :wait5s
    @ping -n 5 localhost > nul

        Пример командного файла, закрывающего окна Проводника Интернет (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

    Работает это следующим образом. Из выходных данных CMDOW берется первое, второе и 8-е поля. Первое — дескриптор окна (Handle), второе — уровень (Lev), третье — имя программы (Image). В цикле выполняется cmdow и если в ее выводе имеется строка, где имя программы IEXPLORE и уровень окна 1 выполняется cmdow /END. Пока этот командный файл выполняется, запустить «Обозреватель интернета» не получится. А если в начало командного файла добавить «cmdow @ /hid» — то будет скрыто и его окно.

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

        В рассматриваемом примере нужно преобразовать исходный текстовый файл в DOS-кодировке в новый текстовый файл в Windows-кодировке. В качестве механизма перекодировки используется смена кодовой страницы командой CHCP и построчная выдача содержимого исходного файла командой ECHO с перенаправлением вывода в новый файл. Для DOS-кодировки используется кодовая страница 866, для Windows-кодировки — 1251. В примере исходный файл называется 866.txt, а файл с перекодированными данными — 1251.txt

    @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

    Аналогичный подход можно использовать и для преобразования текста из Windows — кодировки ( кодовая страница 1251) в DOS-кодировку (кодовая страница 866). Естественно, такая перекодировка не может учитывать пустые строки и форматирование текста с помощью спецсимволов, поскольку команда ECHO не позволяет работать с такими форматами данных.

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

    iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile . ..]

    Входная кодировка задаётся ключом -f, а выходная — ключом -t . Если ключи не заданы, используется кодировка для языка системы по умолчанию. Все входные файлы читаются по очереди, если не задан параметр входного файла, то используется стандартный ввод, а конвертируемый текст выводится на стандартный вывод.

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

    Когда задана опция -s, сообщения об ошибках не выводятся.

    Ключ -l позволяет получить список доступных кодировок. Утилита позволяет перекодировать текст, практически, из любой кодировки в любую.

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

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

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

        Обычно, это вызвано тем, что вы не учитываете тот факт, что на момент выполнения вашего командного файла переменные среды могут быть совсем другими, чем на момент его написания и запуска из командной строки. Например, в командном файле используется запуск приложения myprog.exe, находящегося в каталоге SCRIPTS на диске D: . Если в командном файле используется имя исполняемого модуля без полного пути

    MYPROG.EXE
    и если каталог D:\SCRIPTS не прописан в путях поиска (переменная PATH ) то модуль MYPROG.EXE может быть найден и выполнен только если текущим каталогом является D:\SCRIPTS. Но если вы укажете полный путь к myprog.exe:
    D:\SCRIPTS\myprog.exe
    то программа будет найдена и выполнена в любом случае.
    Кроме того, нередко программа, указанная в командном файле использует для поиска своих компонент (dll, ini и т. п. ) собственный каталог. Но на момент ее выполнения текущим каталогом может быть любой (чаще всего — системный каталог Windows). Естественно, компоненты не находятся и программа не выполняется. Для устранения проблемы добавьте в командный файл команды, обеспечивающие переход в нужный каталог. Например, программа myprog.exe должна выполняться в каталоге D:\SCRIPTS:

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

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

  • Неправильно отображаются русские имена файлов, служб и т.п.
  • Причина в том, что при создании командных файлов вы использовали текстовый редактор, в котором русские символы представлены не в DOS-кодировке. Если в приведенном выше примере перезапуска службы «DNS-клиент» вы используете неверную кодировку, то русская часть имени службы не будет опознана из-за неверной кодировки и будет выдано сообщение, что указанная служба не установлена. Чтобы избежать проблем с русскими символами в командных файлах, используйте редактор с поддержкой DOS-кодировки, например, встроенный редактор файлового менеджера Far Manager. Переключение между кодировками в редакторе осуществляется нажатием F8 . С помощью FAR можно легко осуществлять перекодировку, скопировав (вырезав) текст в буфер обмена, затем нажав F8 и вставив текст из буфера.

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

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

    DIR %ProgramFiles%

    не выдаст вам содержимого каталога C:\Program Files , поскольку из-за наличия пробела будет интерпретирована как

    DIR C:\Program

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

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

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

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

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

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

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

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

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

    Работа с сетью в командной строке Windows — Описание и примеры использования утилит командной строки для работы с сетью.

    Запуск командных файлов от имени администратора без запроса UAC — использование планировщика заданий для запуска приложений от имени Администратора без запроса системы контроля учетных записей UAC.

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

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

    В начало страницы         |         На главную страницу сайта

    Что это и как его открыть?


    By: Jay Geater   |   Изменено: December 05, 2018

    Резюме файла CMD

    Расширение файла CMD имеет пять тип (-ов) файла (-ов) и связано с одиннадцать различными программными обеспечениями, но главным образом с Microsoft Notepad, разработанным Microsoft Corporation. Часто они представлены в формате Windows Command File. Чаще всего файлы CMD классифицируют, как Executable Files. Другие типы файлов также могут относиться к Game Files или Database Files.

    Расширение файла CMD можно просмотреть в Windows, Mac и Linux. Они поддерживаются в основном настольными компьютерами и некоторыми мобильными платформами. Рейтинг популярности файлов CMD составляет «Низкий», что означает, что данные файлы встречаются редко.

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

    Ранг Файла

    / 11690

    Активность

    государство
    5

    December

    2018

    Обновленный

    Попробуйте FileViewPro, чтобы открыть файл CMD

    Продукт Solvusoft

    Скачать бесплатно

    Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

    Известные CMD-файлы

      5 существующих типов файлов используют это расширение

    Ведущий тип CMD

    . CMD

    Расширение:.cmd
    Тип файла:Windows Command File

    Файл CMD содержит ряд команд, выполняемых в порядке, сохраненный в текстовом формате, и может работать в системах DOS или Windows NT.

    Создатель: Microsoft Corporation
    Вид:Исполнимые файлы
    Запись:HKEY_CLASSES_ROOT\.cmd

    Программные обеспечения, открывающие Windows Command File:


    Microsoft Notepad, разработчик — Microsoft Corporation

    Windows
    Mac
    Linux

    Notepad++, разработчик — Don Ho

    Windows
    Mac
    Linux

    Microsoft WordPad, разработчик — Microsoft Corporation

    Windows

    Microsoft Windows, разработчик — Microsoft Corporation

    Windows

    Parallels Desktop for Mac, разработчик — Parallels

    Mac

    AbiWord, разработчик — Open Source

    Windows
    Mac
    Linux

    Corel WordPerfect, разработчик — Corel

    Windows

    Ассоциации других файлов CMD

    . CMD

    Расширение:.cmd
    Тип файла:dBASE Program File

    Программный файл создан в Dbase, широко используется система управления базами данных (СУБД), которая включает в себя современный объектно-ориентированный язык программирования.

    Создатель: dBase, LLC
    Вид:Исполнимые файлы

    Программы, открывающие файлы dBASE Program File :


    dBase, разработчик — dBase, LLC

    Совместимый с:

    Windows

    .CMD

    Расширение:.cmd
    Тип файла:M.U.G.E.N. Character Commands File

    Файл CMD содержит наборы команд для персонажа, созданного M. U.G.E.N., видео-игровой движок, разработанный Элекбит и используется для создания 2D боевых игр.

    Создатель: Elecbyte
    Вид:Файлы игр

    Программы, открывающие файлы M.U.G.E.N. Character Commands File :


    Elecbyte M.U.G.E.N, разработчик — Elecbyte

    Совместимый с:

    Windows
    Mac
    Linux

    .CMD

    Расширение:.cmd
    Тип файла:OS/2 REXX Batch File

    Файл тестовый скрипт, связанный с языком REXX программирования (реорганизованного расширяемый язык ИСПОЛНИТЕЛЬ), язык предназначен для администратора компьютера. Он находится в каталоге, в котором Rexx / SQL устанавливает и перечисляет описательные сообщения об ошибках в случае каких-либо проблем.

    Создатель: IBM
    Вид:Исполнимые файлы

    Программы, открывающие файлы OS/2 REXX Batch File :


    OS/2, разработчик — IBM

    Совместимый с:

    OS/2

    .CMD

    Расширение:.cmd
    Тип файла:Summit Contact Manager Contact Database

    Контактная база данных порождена Summit Central, люди, менеджер, менеджер членства и короткий менеджер курса.

    Создатель: MIE Software Pty Ltd
    Вид:Файлы баз данных

    Программы, открывающие файлы Summit Contact Manager Contact Database :


    Summit Central, разработчик — MIE Software Pty Ltd

    Совместимый с:

    Windows

    Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

    Поиск файлов

    Иерархия ОС
    7(45. 73%)
    10(44.56%)
    8.1(5.41%)
    XP(2.79%)
    8(0.97%)

    Разбивка устройства расширения файла (настольный компьютер / мобильный телефон / планшет)
    ПК(84.34%)
    Мобильные(14.29%)
    Планшет(1.37%)


    Источники проблем с CMD


    Проблемные проблемы с открытием CMD-файлов

    Microsoft Notepad нет

    При попытке открыть CMD-файл возникает сообщение об ошибке, например «%%os%% не удается открыть CMD-файлы». Обычно это означает, что Microsoft Notepad не установлен в %%os%%. Вы не сможете дважды щелкнуть, чтобы открыть свой CMD, так как ваша ОС не знает, что с ним делать.


    Совет: Другая программа, связанная с CMD, может быть выбрана, чтобы открыть файл, нажав «Показать приложения» и найдя приложение.


    Microsoft Notepad устарел

    Иногда установленная версия Microsoft Notepad не поддерживает файл Windows Command File. Если у вас установлена неправильная версия Microsoft Notepad, вам потребуется установить правильную версию. Ваш файл электронной таблицы, вероятно, был создан более новой версией Microsoft Notepad, чем то, что в данный момент установлен на вашем компьютере.


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

    В конечном счете, большинство трудностей при открытии CMD-файлов связаны с установленной неправильной версией Microsoft Notepad.


    Другие причины проблем при открытии CMD-файлов

    Хотя на вашем компьютере уже может быть установлено Microsoft Notepad или другое программное обеспечение, связанное с CMD, вы по-прежнему можете столкнуться с проблемами при открытии файлов Windows Command File. Другие ошибки открытия CMD могут быть созданы другими системными проблемами внутри %%os%%. К числу этих вопросов относятся:

    • Тип файла CMD Неверные записи реестра
    • Случайное удаление описания файла CMD в реестре Windows
    • Недопустимая установка программы, связанной с CMD (например, Microsoft Notepad)
    • Что-то вызвало повреждение файла вашего CMD
    • На ваш документ CMD негативно повлияли вредоносные программы
    • Драйверы устройств для оборудования, связанного с CMD, устарели
    • Отсутствие на компьютере достаточных системных ресурсов для открытия формата Windows Command File

    Викторина: Какое расширение файла не связано с Microsoft Office?
    DOCX
    MPEG
    PPT
    XLS
    Опрос: Ваш любимый формат аудио?
    MID
    MP3
    OGG
    WAV
    WMA
    Другое

    Как исправить проблемы с открытием файлов CMD

    Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление


    Расширение файла   # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    Что такое пакетный файл и как его запустить в Windows 10?

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

    Связанный: Что такое драйверы в Windows 10 и как устранить неполадки с драйверами?

    Что такое пакетный файл?

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

    Зачем использовать пакетные файлы?

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

    Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

    • Запускать программы или запускать процессы при запуске.
    • Планируйте такие задачи, как резервное копирование файлов.
    • Настроить устройства.
    • Автоматизируйте рутины.
    • Запускайте приложения или веб-сайты.

    Внимание: Хотя командные файлы очень полезны, их можно использовать для выполнения вредоносных действий. Злоумышленники могут использовать командные файлы для выполнения команд, которые могут нанести вред вашему компьютеру. Поэтому перед запуском командного файла убедитесь, что знаете источник и доверяете ему.

    Создание пакетного файла

    Чтобы создать командный файл в Windows, вам понадобится только текстовый редактор и команды cmd.

    • Откройте «Блокнот» или любой другой текстовый редактор, например Notepad ++, и введите свои команды.
    • Вы можете вводить команды для выполнения нескольких задач в одном файле.
    Пример пакетного файла
    • Щелкните меню «Файл», затем сохраните и введите имя командного файла, добавив .bat в конце имени.
    • Нажмите кнопку «Сохранить». Вы можете идентифицировать файл .bat по миниатюре с двумя значками шестеренки.
    Образец пакетного файла

    Как запустить пакетный файл в Windows 10?

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

    Метод 1: запуск командного файла по запросу

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

    Из проводника
    • В проводнике откройте папку, содержащую командный файл.
    • Дважды щелкните файл или щелкните правой кнопкой мыши, чтобы запустить файл от имени администратора, если для выполнения задачи требуются права администратора.
    Запустить пакетный файл вручную
    Из командной строки Windows
    • Запустите командную строку с опцией «Запуск от имени администратора».
    • Измените каталог на папку, содержащую ваш командный файл «C: [user][file location path]»
    • Затем введите в команде имя файла с расширением .bat или без него и нажмите Enter.
    Запустить файл

    Метод 2: как запустить командный файл во время запуска?

    Если вы хотите запускать командный файл при каждом входе в Windows, вы можете сделать это, выполнив следующие действия.

    • Нажмите сочетание клавиш «Win + R», чтобы открыть служебную программу «Выполнить». Введите «shell: startup» и нажмите Enter на клавиатуре.
    Запустить оболочку
    • Это откроет папку «Автозагрузка».
    • Скопируйте и вставьте командный файл или его ярлык в эту папку, а затем закройте.
    Метод запуска
    • Вы можете выйти из своей учетной записи и войти снова, чтобы убедиться, что она работает.

    Метод 3: запуск командного файла с помощью планировщика задач

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

    • Перейдите в меню «Пуск», найдите «Планировщик заданий» и выберите соответствующий вариант в результате.
    • Под библиотекой планировщика на левой панели создайте папку для своей задачи и нажмите «Создать базовую задачу…» в разделе «Действия» на правой панели.
    • Введите имя и описание (необязательно) вашей задачи в открывшемся мастере и нажмите «Далее».
    Создать задачу
    • Установите триггер задачи в зависимости от того, когда вам нужно запустить задачу, и нажмите кнопку «Далее».
    Расписание триггера
    • В разделе «Действие» выберите вариант «Запустить программу» и перейдите на следующую страницу.
    • В поле «Сценарий» нажмите «Обзор», перейдите в папку, в которой вы сохранили командный файл, и выберите файл.
    Выбрать действие
    • Проверьте сведения о задаче и нажмите «Готово», чтобы завершить процесс.
    Завершить до завершения
    • Windows автоматически запустит командный файл в указанное вами время.

    Вывод

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

    Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

    Похожие записи

    cmd | Microsoft Learn

    Twitter LinkedIn Facebook Адрес электронной почты

    • Статья
    • Чтение занимает 4 мин

    Запускает новый экземпляр интерпретатора команд Cmd. exe. При использовании без параметров cmd отображает сведения о версии и авторских правах операционной системы.

    Синтаксис

    cmd [/c|/k] [/s] [/q] [/d] [/a|/u] [/t:{<b><f> | <f>}] [/e:{on | off}] [/f:{on | off}] [/v:{on | off}] [<string>]
    

    Параметры

    ПараметрОписание
    /CВыполняет команду, заданную строкой , а затем останавливается.
    /kВыполняет команду, указанную строкой , и продолжается.
    /sИзменяет обработку строки после /c или /k.
    /qОтключает эхо.
    /dОтключает выполнение команд AutoRun.
    /aФорматирует выходные данные внутренних команд в канал или файл как Американский институт национальных стандартов (ANSI).
    /UФорматирует внутренние выходные данные команды в канале или файле как Юникод.
    /t:{<b><f> | <f>}Задает цвета фона (b) и переднего плана (f).
    /e:onВключает расширения команд.
    /e:offОтключает расширения команд.
    /f:onВключает завершение имени файла и каталога.
    /f:offОтключает завершение имени файла и каталога.
    /v:onВключает отложенное расширение переменной среды.
    /v:offОтключает отложенное расширение переменной среды.
    <string>Указывает команду, которую требуется выполнить.
    /?Отображение справки в командной строке.

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

    ЗначениеColor
    0Черный
    1Синий
    2Зеленый
    3Aqua
    4Красный
    5Сиреневый
    6Желтый
    7Белый
    8Серый
    9Светло-синий
    асветло-зеленый
    bСветлая вода
    сСветло-красный
    dСветло-фиолетовый
    Д. |).

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

  • Строка в кавычках — это имя исполняемого файла.

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

  • Если не указать /d в строке, Cmd.exe ищет следующие подразделы реестра:

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

    Внимание!

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

  • Расширения команд для определенного процесса можно отключить с помощью /e:off. Вы можете включить или отключить расширения для всех параметров командной строки cmd на компьютере или сеансе пользователя, задав следующие REG_DWORD значения:

    Задайте для REG_DWORD значение 0×1 (включено) или 0×0 (отключено) в реестре с помощью Regedit. exe. Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра.

    Внимание!

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

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

  • Если включить отложенное расширение переменной среды, можно использовать символ восклицательного знака для замены значения переменной среды во время выполнения.

  • Завершение имени файла и каталога по умолчанию не включено. Вы можете включить или отключить завершение имени файла для определенного процесса команды cmd с параметром /f:{ | on off}. Вы можете включить или отключить завершение имени файла и каталога для всех процессов команды cmd на компьютере или для сеанса входа пользователя, задав следующие REG_DWORD значения:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    Чтобы задать значение REG_DWORD , выполните Regedit. exe и используйте шестнадцатеричное значение символа элемента управления для конкретной функции (например, 0×9 — TAB, а 0×08 — BACKSPACE). Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра.

    Внимание!

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

  • Если включить завершение имени файла и каталога с помощью /f:on, нажмите клавиши CTRL+D для завершения имени каталога и CTRL+F для завершения имени файла. Чтобы отключить определенный символ завершения в реестре, используйте значение пробела [0×20], так как он не является допустимым символом элемента управления.

    • Нажатие клавиш CTRL+D или CTRL+F обрабатывает завершение имени файла и каталога. Эти функции сочетания клавиш добавляют к строке подстановочный знак (если он отсутствует), создает список путей, соответствующих, а затем отображает первый совпадающий путь.

      Если ни один из путей не совпадает, функция завершения имени файла и каталога не изменяет отображение. Чтобы перейти по списку совпадающих путей, несколько раз нажмите клавиши CTRL+D или CTRL+F . Чтобы перемещаться по списку назад, одновременно нажимайте клавиши SHIFT и CTRL+D или CTRL+F . Чтобы отменить сохраненный список совпадающих путей и создать новый список, измените строку и нажмите клавиши CTRL+D или CTRL+F. При переключении между клавишами CTRL+D и CTRL+F сохраненный список совпадающих путей удаляется и создается новый список. Единственное различие между сочетаниями клавиш CTRL+D и CTRL+F заключается в том, что CTRL+D соответствует только именам каталогов, а ctrl+F соответствует именам файлов и каталогов. = ; ! ‘ + , ‘ ~ [пробел].

    • Если указанная информация содержит пробелы, необходимо использовать кавычки вокруг текста (например, «Имя компьютера»).

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

  • Дополнительные ссылки

    • Условные обозначения синтаксиса команд командной строки

    Что такое cmd.exe? Это безопасно или вирус? Как удалить или исправить это

    Contents [show]

    • 1. Что такое cmd.exe?
    • 2. Cmd.exe безопасен, или это вирус или вредоносная программа?
    • 3. Могу ли я удалить или удалить cmd.exe?
    • 4. Распространенные сообщения об ошибках в cmd.exe
    • 5. Как исправить cmd.exe
    • 6. Сентябрьское обновление 2022
    • 7. Загрузите или переустановите cmd. exe

    Обновлено сентябрь 2022: Вот три шага к использованию инструмента восстановления для устранения проблем с exe на вашем компьютере: Получите его по адресу эту ссылку

    1. Скачайте и установите это программное обеспечение.
    2. Просканируйте свой компьютер на наличие проблем с exe.
    3. Исправьте ошибки exe с помощью программного инструмента

    Что такое cmd.exe?

    cmd.exe это исполняемый файл, который является частью Microsoft AppLocale Программа, разработанная Microsoft, Программное обеспечение обычно о 1.33 MB по размеру.

    Расширение .exe имени файла отображает исполняемый файл. В некоторых случаях исполняемые файлы могут повредить ваш компьютер. Пожалуйста, прочитайте следующее, чтобы решить для себя, является ли cmd.exe Файл на вашем компьютере — это вирус или троянский конь, который вы должны удалить, или это действительный файл операционной системы Windows или надежное приложение.

    Рекомендуется: Выявить ошибки, связанные с cmd.exe
    (опциональное предложение для Reimage — Cайт | Лицензионное соглашение | Персональные данные | Удалить)

     

    Cmd.exe безопасен, или это вирус или вредоносная программа?

    Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, такой процесс, как cmd.exe, должен запускаться из C: \ Windows \ System32 \ cmd.exe, а не где-либо еще.

    Для подтверждения откройте диспетчер задач, выберите «Просмотр» -> «Выбрать столбцы» и выберите «Имя пути к изображению», чтобы добавить столбец местоположения в диспетчер задач. Если вы обнаружите здесь подозрительный каталог, возможно, стоит дополнительно изучить этот процесс.

    Еще один инструмент, который иногда может помочь вам обнаружить плохие процессы, — это Microsoft Process Explorer. Запустите программу (не требует установки) и активируйте «Проверить легенды» в разделе «Параметры». Теперь перейдите в View -> Select Columns и добавьте «Verified Signer» в качестве одного из столбцов.

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

    Самые важные факты о cmd.exe:

    • Находится в C: \ Windows \ AppPatch вложенная;
    • Издатель: Microsoft
    • Полный путь: C: \ Windows \ System32 \ cmd.exe
    • Файл справки:
    • URL издателя: www.microsoft.com/en-us/download/details.aspx?id=13209
    • Известно, что до 1.33 MB по размеру на большинстве окон;

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

    Найдите его местоположение (оно должно быть в C: \ windows \ apppatch) и сравните его размер с приведенными выше фактами.

    Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус cmd.exe, вам необходимо Загрузите и установите приложение полной безопасности, например Malwarebytes., Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

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

     

    Могу ли я удалить или удалить cmd.exe?

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

    Согласно различным источникам онлайн, 1% людей удаляют этот файл, поэтому он может быть безвредным, но рекомендуется проверить надежность этого исполняемого файла самостоятельно, чтобы определить, является ли он безопасным или вирусом. Лучшая диагностика для этих подозрительных файлов — полный системный анализ с Reimage, Если файл классифицируется как вредоносный, эти приложения также удаляют cmd.exe и избавляются от связанных вредоносных программ.

    Однако, если это не вирус, и вам нужно удалить cmd.exe, вы можете удалить Microsoft AppLocale с вашего компьютера, используя его деинсталлятор, который должен находиться по адресу: MsiExec. exe / I {394BE3D9-7F57-4638-A8D1- 1D88671913B7}. Если вы не можете найти его деинсталлятор, то вам может потребоваться удалить Microsoft AppLocale, чтобы полностью удалить cmd.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.

    • 1. в Меню Пуск (для Windows 8 щелкните правой кнопкой мыши в нижнем левом углу экрана), нажмите Панель управления, а затем под Программы:
      o Windows Vista / 7 / 8.1 / 10: нажмите Удаление программы.
      o Windows XP: нажмите Установка и удаление программ.
    • 2. Когда вы найдете программу Microsoft AppLocaleщелкните по нему, а затем:
      o Windows Vista / 7 / 8.1 / 10: нажмите Удалить.
      o Windows XP: нажмите Удалить or Изменить / Удалить вкладка (справа от программы).
    • 3. Следуйте инструкциям по удалению Microsoft AppLocale.

     

     

     

    Распространенные сообщения об ошибках в cmd.exe

    Наиболее распространенные ошибки cmd.exe, которые могут возникнуть:


    • «Ошибка приложения cmd.exe».
    • «Ошибка cmd.exe».
    • «cmd.exe столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства».
    • «cmd.exe не является допустимым приложением Win32».
    • «cmd.exe не запущен».
    • «cmd.exe не найден».
    • «Не удается найти cmd.exe».
    • «Ошибка запуска программы: cmd.exe».
    • «Неверный путь к приложению: cmd.exe.»

    Эти сообщения об ошибках .exe могут появляться во время установки программы, во время выполнения связанной с ней программы Microsoft AppLocale, во время запуска или завершения работы Windows или даже во время установки операционной системы Windows. Отслеживание момента появления ошибки cmd.exe является важной информацией при устранении неполадок.

     

    Как исправить cmd.exe

    Аккуратный и опрятный компьютер — это один из лучших способов избежать проблем с Microsoft AppLocale. Это означает выполнение сканирования на наличие вредоносных программ, очистку жесткого диска cleanmgr и ПФС / SCANNOWудаление ненужных программ, мониторинг любых автозапускаемых программ (с помощью msconfig) и включение автоматических обновлений Windows. Не забывайте всегда делать регулярные резервные копии или хотя бы определять точки восстановления.

    Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

    Чтобы помочь вам проанализировать процесс cmd.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

     


    Обновлен сентябрь 2022:

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

    • Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
    • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
    • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.


    (опциональное предложение для Reimage — Cайт | Лицензионное соглашение | Персональные данные | Удалить)

    Загрузите или переустановите cmd.exe

    Вход в музей Мадам Тюссо не рекомендуется загружать заменяемые exe-файлы с любых сайтов загрузки, так как они могут сами содержать вирусы и т. д. Если вам нужно скачать или переустановить cmd.exe, мы рекомендуем переустановить основное приложение, связанное с ним Microsoft AppLocale.

    Информация об операционной системе

    Ошибки cmd.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

    • Windows 10
    • Windows 8.1
    • Windows 7
    • Windows Vista
    • Windows XP
    • Windows ME
    • Windows 2000

    РЕКОМЕНДУЕМЫЕ: Нажмите здесь, чтобы устранить ошибки Windows и оптимизировать производительность системы

    report this ad

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

    Рассмотрим мощный инструмент автоматизации рутинных задач в семействе операционных систем Windows.

    Что такое bat-файлы?

    BAT-файл — это последовательность команд для интерпретатора командной строки в виде текстового файла с расширением .bat или .cmd. Основное предназначение пакетных файлов — автоматизация рутинных действий пользователя компьютера.

    Название BAT появилось от английского batch — пакетная обработка. В истории продуктов Microsoft пакетные файлы существовали с первой версии MS-DOS в 80-х годах и позже успешно интегрировались в Microsoft Windows. В MS-DOS командным интерпретатором выступает COMMAND.COM, а начиная с Windows NT и до сих пор используется CMD.EXE.

    Интерпретатор COMMAND.COM принимает файлы с расширением .BAT. Расширение .CMD создано для интерпретатора CMD.EXE с целью различать файлы для «старого» и «нового» интерпретаторов. CMD.EXE корректно обрабатывает оба расширения.

    Интерпретатор CMD.EXE является частью современных операционных систем семейства Microsoft Windows, несмотря на отсутствие развития с начала 2000-х.

    Основы взаимодействия с bat-файлами

    Пакетный файл bat — это текстовый документ со специальным расширением. Для создания своего первого bat-файла достаточно «Блокнота», который доступен в операционной системе. Для повышения удобства написания и поддержки bat-файлов рекомендуем использовать Notepad++ или любой другой текстовый редактор с подсветкой синтаксиса. 

    Создание bat-файлов

    Для создания пакетных файлов необходимо открыть текстовый редактор и в меню Файл выбрать Сохранить как….

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

    Если вы ошиблись при сохранении и пакетный файл сохранился с расширением txt, то не обязательно совершать повторное сохранение. Можно включить отображение расширения имен файлов и переименовать файл.

    Запуск bat-файлов

    Запуск пакетных файлов производится двойным кликом по иконке. Дополнительно можно использовать команду Открыть из контекстного меню, которое доступно при нажатии правой клавиши мыши (ПКМ) по файлу. Если для выполнения команд требуются права администратора, то в том же контекстном меню есть пункт Запуск от имени администратора

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

    Запуск через контекстное меню откроет командный интерпретатор, в котором выполнятся команды bat-файла. По завершении команд окно закроется. Такое поведение неприемлемо, если от пакетного файла требуется какая-то обратная связь — например, сообщение об ошибке или результат вычислений. В таком случае интерпретатор следует запустить вручную и передать ему пакетный файл. 

    Для запуска интерпретатора командной строки необходимо открыть меню Выполнить сочетанием клавиш Win + R, вписать cmd и нажать ОК.

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

    Скрытый запуск

    Вне зависимости от способа запуска откроется окно, которое может привлекать внимание и раздражать. Для запуска в «скрытом» режиме необходимо использовать другой скриптовой язык Microsoft Windows — VBScript.

    По аналогии создаем файл с расширением .vbs и заполняем его следующими командами:

    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run chr(34) & "С:\путь\до\вашего\скрипта.bat" & Chr(34), 0
    Set WshShell = Nothing

    Для скрытого запуска следует запускать созданный файл, а не bat-файл. Скрытый запуск bat-файла актуален для автоматизации действий по расписанию, например, создание резервной копии. 

    Запуск по расписанию

    За выполнение действий по расписанию отвечает Планировщик заданий. Открываем меню Выполнить и запускаем программу taskschd.msc.

    Выбираем пункт Создать простую задач и заполняем параметры задания:

    • имя для простой идентификации,
    • периодичность и время запуска,
    • действие — Запустить программу,
    • программа или сценарий — путь до вашего . bat-файла или .vbs-файла, который запускает .bat-файл скрытно.

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

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

    Команды и синтаксис пакетных файлов

    Командный интерпретатор выполняет команды из файла последовательно — строка за строкой. Исключение составляет только оператор GOTO, который «отправляет» к указанной строке. Командный интерпретатор выполняет два вида команд: встроенные команды и внешние исполняемые файлы.

    Внешние исполняемые файлы — это любой исполняемый файл, то есть с расширением EXE, CMD или BAT, который доступен в операционной системе. Например, «Блокнот» — это исполняемый файл notepad.exe. Следующая команда приведет к запуску этого приложения с открытым файлом C:\1.txt:

    notepad. exe C:\1.txt

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

    Обратите внимание, что не все внешние команды «понимают» аргументы, переданные из интерпретатора командной строки. Например, исполняемый файл приложения калькулятор, calc.exe, игнорирует все аргументы командной строки. Внешним исполняемым файлом может быть в том числе другой bat-файл.

    Встроенные команды — это команды, которые являются частью интерпретатора командной строки. Полный список команд доступен по команде HELP. Данные команды не имеют отдельного исполняемого файла. 

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

    cd "C:\Program Files\123"
    cd C:\”Program Files”\123

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

    Оставлять комментарии при разработке — хороший тон. Так можно объяснить выполняемые действия и потенциальные ошибки. В пакетных файлах можно оставлять комментарии несколькими способами. 

    Официальный способ — команда rem или два двоеточия.

    rem Это первый комментарий
    :: Это тоже комментарий

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

    goto start
    ===
    Здесь можно оставить большой комментарий,
    лицензию или даже ASCII-арт
    ===
    :start

    В конце комментария задаем имя метки, а в начале комментария выполняем команду GOTO c именем метки. Этот способ требует внимания, так как для каждого комментария должна быть своя метка, иначе выполнение bat-файла может отличаться от ожидания разработчика.

    Совместимость с MS-DOS 

    В старых ОС, таких как MS-DOS, было ограничение на отображение имени файлов. На экран выводилось восемь символов имени, точка и три символа расширения. Если имя файла превышало по длине восемь символов, то имя файла отображалось по следующей схеме:

    <первые шесть символов имени>~<порядковый номер>

    Например, каталог Program Files выглядит следующим образом:

    Progra~1

    В современных операционных системах такое отображение не применяется, но CMD.EXE до сих пор поддерживает такие запросы к файлам и каталогам.

    Используйте bat-файлы в работе с выделенным сервером

    Выберите подходящий из более 100 готовых конфигураций.

    Подобрать сервер

    Примеры bat-файлов

    Рассмотрим несколько примеров bat-файлов. Начнем с базовых команд.

    Обновление IP-адреса

    Представим простой пример: необходимо обновить аренду IP-адресов на всех сетевых интерфейсах. В командной строке это делается одной командой:

    ipconfig /renew

    Данная команда генерирует много текстового вывода, который может испугать неподготовленного пользователя. Сама команда также может быть непривлекательной. Поэтому отключим отображение команды и перенаправим вывод выполнения в «никуда». Вместо слова NUL может быть любое имя или путь. Тогда вывод будет перенаправлен в указанный файл.

    rem Отключаем отображение команд. Символ @ отключает отображение текущей команды
    @echo off
    rem Переводим вывод выполнения в устройство NUL, вывод исчезнет
    ipconfig /renew > NUL

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

    @echo off
    echo Выполняется настройка, пожалуйста, подождите...
    ipconfig /renew > NUL
    echo Все хорошо.
    rem Эта команда остановит выполнение до тех пор, пока пользователь не нажмет любую клавишу
    pause

    Скорее всего данный скрипт выведет набор непонятных символов вместо сообщения. Дело в том, что в русскоязычных ОС Windows по умолчанию в CMD.EXE используется кодировка CP866. Блокнот сохраняет в CP1251 (Windows-1251), а Notepad++ — в UTF-8. Для решения проблемы необходимо сменить кодировку интерпретатора командой chcp или сохранить bat-файл в кодировке интерпретатора.

    rem Смена кодировки на Windows-1251
    chcp 1251 > NUL
    rem Смена кодировки на UTF-8
    chcp 65001 > NUL

    Я сохранил файл в кодировке UTF-8 и итоговый скрипт получился таким:

    @echo off
    chcp 65001 > NUL
    echo Выполняется настройка, пожалуйста, подождите...
    ipconfig /renew > NUL
    echo Все хорошо.
    pause

    Создание резервной копии каталога

    Перейдем к более жизненной ситуации — создание резервной копии (backup) каталога. Предположим, что каждый архив должен иметь в названии дату создания копии. Создадим каталог, имя которого — текущая дата. Текущая дата хранится в переменной DATE. Для обращения к переменным название переменной помещается между знаками процента.

    mkdir %DATE%
    cd %DATE%

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

    rem файлы 1.txt и 2.txt будут скопированы в текущую папку
    COPY C:\1. txt C:\2.txt .
    rem файл 3.txt будет сохранен в текущую папку как example.txt
    COPY C:\1.txt .\example.txt

    Возможно, в резервную копию необходимо дополнить служебную информацию — например, список файлов в корне копии и имя компьютера.

    rem Имя компьютера записывается в файл computer.txt
    hostname > computer.txt
    rem Список файлов в текущем каталоге записывается в files.txt
    dir . > files.txt

    Обычно резервные копии хранят в zip- или rar-архивах. Из командной строки отлично управляется архиватор 7z.

    cd ..
    7z -tzip a backup.zip %DATE% 

    Переименование файлов

    Переименование файлов в Windows производится командой RENAME. Однако эта команда имеет свои особенности. 

    Во-первых, переименование возможно только в рамках одного диска и одного каталога. Между каталогами одного диска допустимо перемещение, а между разными дисками — только копирование.

    rename abc.txt cba.txt

    Во-вторых, возможно переименование по маске. Допустим, есть список фотографий photo000. jpeg, photo001.jpeg и так далее. Нужно сменить префикс с photo на mobile.

    rename photo* mobile*

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

    rename photo*.jpeg mobile*.jpeg

    Удаление файлов

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

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

    rem Ищем все файлы с расширением jpeg в каталоге work
    rem Ключ /r включает в поиск все подкаталоги в каталоге work
    for /r work %%file in (*.jpeg) do (
       rem Выводим имя файла
       echo %%file
       delete %%i
    )

    Заключение

    Командный интерпретатор CMD.EXE существует долгое время, но, даже несмотря на отсутствия развития, остается востребованным инструментом для автоматизации рутинных действий в операционной системе Microsoft Windows.

    пакетных файлов Windows: .bat или .cmd?

    Насколько я понимаю, .bat — это старое соглашение об именовании 16-битных, а .cmd — для 32-битной винды, т.е. начиная с NT. Но я продолжаю повсюду видеть файлы .bat, и они, похоже, работают одинаково, используя любой суффикс. Предполагая, что мой код никогда не нужно будет запускать на чем-то более старом, чем NT, действительно ли имеет значение, как я назову свои пакетные файлы, или меня ждет какой-то gotcha , используя неправильный суффикс?

    • окна
    • пакетный файл
    • cmd

    2

    Из этой группы новостей, опубликованной самим Марком Збиковски:

    Различия между .CMD и .BAT в отношении CMD.EXE являются: с включенными расширениями, PATH/APPEND/PROMPT/SET/ASSOC в .CMD файлы будут устанавливать ERRORLEVEL независимо от ошибки. .BAT устанавливает ERRORLEVEL только на ошибках.

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

    • оставить в покое со значением, отличным от 0, в файле .bat
    • сбрасывается на 0 в файле .cmd.

    10

    Вот подборка проверенной информации из различных ответов и цитируемых ссылок в этой теме:

    1. command.com — это 16-разрядный командный процессор, представленный в MS-DOS, который также использовался в серии операционных систем Win9x. системы.
    2. cmd.exe — это 32-разрядный командный процессор в Windows NT (64-разрядные ОС Windows также имеют 64-разрядную версию). cmd.exe никогда не входил в состав Windows 9x. Он возник в OS/2 версии 1.0, а версия OS/2 cmd начиналась с 16-разрядной версии (но, тем не менее, была полноценной программой защищенного режима с такими командами, как start ). Windows NT унаследовала cmd от OS/2, но Win32-версия Windows NT изначально была 32-разрядной. Хотя в 1992 году OS/2 стала 32-разрядной, ее cmd осталась 16-разрядной программой OS/2 1.x.
    3. Переменная env ComSpec определяет, какая программа запускается 9Скрипты 0003 .bat и .cmd . (Начиная с WinNT по умолчанию используется cmd.exe .)
    4. cmd.exe обратно совместим с command.com .
    5. Сценарий, разработанный для cmd.exe , может быть назван .cmd , чтобы предотвратить случайное выполнение в Windows 9x. Это расширение имени файла также восходит к OS/2 версии 1.0 и 1987 году.

    Вот список функций cmd.exe , которые не поддерживаются 9 )

  • Стек каталогов: PUSHD / POPD
  • Целочисленная арифметика: SET /A i+=1
  • Поиск/Замена/Подстрока: SET %varname:expression%
  • Подстановка команды: FOR /F (существовала ранее, была расширена)
  • Функции: ВЫЗОВ: ярлык
  • Порядок выполнения:

    Если обе версии сценария . bat и .cmd (test.bat, test.cmd) находятся в одной папке и вы запускаете сценарий без расширения (test), по умолчанию используется .bat версия скрипта будет работать даже в 64-битной Windows 7. Порядок выполнения контролируется переменной окружения PATHEXT. Дополнительные сведения см. в разделе Порядок, в котором командная строка запускает файлы.

    Ссылки:

    • cmd.exe
    • command.com

    Википедия: Сравнение командных оболочек

    15

    Эти ответы слишком длинные и сосредоточены на интерактивном использовании. Важными отличиями для сценариев являются:

    • .cmd предотвращает непреднамеренное выполнение в системах, отличных от NT.
    • .cmd позволяет встроенным командам изменять Errorlevel на 0 в случае успеха.

    Не так уж интересно, а?

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

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

    3

    Нет, это не имеет ни малейшего значения. В NT расширения .bat и .cmd заставляют процессор cmd.exe обрабатывать файл точно таким же образом.

    Дополнительная интересная информация о command.com и cmd.exe в системах класса WinNT от MS TechNet (http://technet.microsoft.com/en-us/library/cc723564.aspx):

    В этом поведении обнаруживается довольно тонкий особенность Windows NT, которая очень важный. 16-битная оболочка MS-DOS (COMMAND.COM), поставляемый с Windows NT специально разработана для Windows НТ. При вводе команды для выполнение этой оболочкой, это не на самом деле выполнить его. Вместо этого это упаковывает текст команды и отправляет его в 32-разрядную командную оболочку CMD. EXE для исполнение. Поскольку все команды фактически выполняется CMD.EXE (файл командная оболочка Windows NT), 16-разрядная оболочка наследует все функции и возможности полной Windows NT оболочка.

    4

    RE: Очевидно, когда вызывается command.com, это сложная загадка;

    Несколько месяцев назад в ходе проекта нам пришлось выяснить, почему некоторые программы, которые мы хотели запускать под CMD.EXE, на самом деле работали под COMMAND.COM. Рассматриваемая «программа» была очень старым файлом .BAT, который до сих пор запускается ежедневно.

    Мы обнаружили, что причина, по которой пакетный файл запускался под COMMAND.COM, заключалась в том, что он запускался из файла .PIF (тоже древнего). Поскольку специальные настройки конфигурации памяти, доступные только через PIF, стали неактуальны, мы заменили их обычным ярлыком на рабочем столе.

    Тот же командный файл, запущенный с ярлыка, запускается в CMD. EXE. Когда вы думаете об этом, это имеет смысл. Причина, по которой нам потребовалось так много времени, чтобы понять это, была частично связана с тем, что мы забыли, что его элемент в группе запуска был PIF, потому что он был в производстве с 1998 года.

    1

    Тем не менее, в Windows 7 файлы BAT также имеют следующее отличие: если вы когда-нибудь создадите файлы TEST.BAT и TEST.CMD в одном и том же каталоге и запустите TEST в этом каталоге, он запустит файл BAT.

     C:\>эхо %PATHEXT%
    .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    C:\Temp>эхо-эхо-летучая мышь > test.bat
    C:\Temp> эхо-команда > test.cmd
    C:\Temp> тест
    C:\Temp>эхо-летучая мышь
    летучая мышь
    C:\Темп>
     

    4

    Поскольку исходное сообщение касалось последствий использования суффикса .bat или .cmd , не обязательно команд внутри файла…

    Еще одно различие между .bat и . cmd заключается в том, что если два файла существуют с тем же именем файла и обоими этими расширениями, то:

    5

    все, что работает в пакете, должно работать в cmd; cmd предоставляет некоторые расширения для управления средой. кроме того, cmd выполняется в новом интерпретаторе cmd и, следовательно, должен быть быстрее (незаметен для коротких файлов) и стабильнее, поскольку bat работает в эмулированной 16-битной среде NTVDM

    1

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

    3

    Я считаю, что если вы измените значение переменной среды ComSpec на %SystemRoot%system32\cmd.exe (CMD), тогда не имеет значения, будет ли расширение файла .BAT или . CMD . Я не уверен, но это может быть даже по умолчанию для WinXP и выше.

    Расширение не имеет значения.

    Существуют небольшие различия между COMMAND.COM , обрабатывающим файл, и CMD.EXE .

    0

    разница:

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

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

    6

    windows — BAT-файл для открытия CMD в текущем каталоге

    Спросил

    Изменено 1 год, 8 месяцев назад

    Просмотрено 213k раз

    У меня есть много скриптов, с которыми я взаимодействую из командной строки. Каждый раз, когда мне нужно их использовать, я должен открывать окно командной строки и копировать + вставить и компакт-диск с путем к каталогу, в котором они находятся. Это утомительно (они находятся в довольно глубокой файловой системе, поэтому ввод полного пути это боль, копировать + вставить лучше, но не намного). Я попытался создать файл .BAT, по которому можно было бы дважды щелкнуть, чтобы открыть новое окно командной строки в папке .bat файл есть но он не работает. Он открывает новое окно, но рабочий каталог не является каталогом, в котором находится файл .bat. Вот что я получил после долгих поисков (мои навыки работы с cmd не так хороши):

     cd %CD%
    cmd.exe
     

    Когда я использовал Linux, я знаю, что в Konqueror есть функция «Окно командной строки здесь», и именно этот эффект я пытаюсь получить в Windows.

    • windows
    • cmd
    • windows-xp

    4

    вы, вероятно, захотите сделать это:

     cd /d %~dp0
    cmd. exe
     

    это установит ваш текущий каталог в каталог, в котором находится пакетный файл

    10

    Создайте файл с именем open_dos_here.cmd со следующими строками:

     %~d1
    компакт-диск "%~p1"
    вызвать команду
     

    Поместите этот файл в любую папку. Затем перейдите в папку «Отправить» ( Win + E ; Alt + D ; 9).0003 оболочка: отправить на ; Введите ). Создайте ярлык, чтобы указать на это open_dos_here.cmd

    Затем в любой папке выберите любой файл или подпапку. Щелкните правой кнопкой мыши и выберите «Отправить», а затем выберите open_dos_here.cmd , чтобы открыть DOS в этой папке.

    7

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

    4

    Есть более простой способ

     start /d "путь к папке"
     

    1

    В качестве более общего решения вы можете попробовать Microsoft Power Toy для XP, который добавляет опцию «Открыть командное окно здесь» при щелчке правой кнопкой мыши: http://www. microsoft.com/windowsxp/downloads/powertoys /xppowertoys.mspx

    В Vista и Windows 7 вы получите этот параметр, если, удерживая нажатой клавишу Shift, щелкните правой кнопкой мыши (это встроено).

    2

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

    Лучше также добавить эту строку в ваш пакетный файл:

     REM Изменить текущий каталог на расположение этого пакетного файла
    CD /D %~dp0
     

    , если только вы не полностью соответствуете всем своим путям.

    2

    Другим решением является использование файла ярлыка для cmd.exe вместо пакетного файла.

    Измените свойство ярлыка start in на %~dp0 .

    Вы получите то же самое, за исключением того, что у него есть значок Cmd (и вы можете изменить это).

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

    1

    Простейшая команда для этого:
    start

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

    Самый простой способ в проводнике — Shift + правый клик по папке или пустому месту в папке и нажать Открыть командную строку здесь .

    CMD запустится в этой папке

    Должен сказать, я не уверен, что это работает для Windows Vista и ниже, но точно работает для Windows 7, 8, 8.1 и 10.

    0

    Ссылаясь на ответ @Chris,

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

     cd /d %~dp0. .
    
    cmd.exe
     

    Чтобы понять работу команды cd /d %~dp0.. см. ссылку ниже

    Что означает команда cd /d %~dp0 в Windows

    Вы можете добавить запись в контекстное меню через реестр: Регистрация в HKEY_LOCAL_MACHINE/программное обеспечение/классы/папка/оболочка и создайте ключ под названием «Командная строка» без кавычек.

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

  • Создайте новый ключ во вновь созданной командной строке с именем «команда» и установите строку по умолчанию на

     cmd.exe /k pushd %1
     
  • Вам может потребоваться добавить %SystemRoot%\system32\ перед cmd.exe, если исполняемый файл не может быть найден.

    1. Изменения должны вступить в силу немедленно. Щелкните правой кнопкой мыши папку, и ваш новый пункт меню должен появиться.

    См. также http://www. petri.co.il/add_command_prompt_here_shortcut_to_windows_explorer.htm

    Когда вы находитесь в нужной папке, просто введите CMD в адресную строку

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

    Два решения с одинаковым первым шагом: Сначала перейдите к месту, где вы храните свои скрипты, и скопируйте путь к файлу в этот каталог.

    Первое решение:

    • Нажмите «Пуск»
    • Щелкните правой кнопкой мыши «Компьютер» (или «Мой компьютер»)
    • Нажмите «Свойства»
    • Слева нажмите «Дополнительные параметры системы»
    • Щелкните «Переменные среды»
    • В поле «Системные переменные» прокрутите вниз и выберите «ПУТЬ».
    • Нажмите «Редактировать»
    • В поле «Значение переменной» прокрутите до упора вправо
    • Если точки с запятой (;) еще нет, добавьте ее.
    • Вставьте путь к файлу, который вы скопировали ранее.
    • Заканчивайте точкой с запятой.
    • Нажмите «ОК»
    • Нажмите «ОК» еще раз
    • Нажмите «ОК» в последний раз

    Теперь вы можете использовать любой из ваших скриптов, как если бы вы уже были в этой папке.

    Второе решение: (можно легко объединить с первым для дополнительной пользы)

    На рабочем столе создайте пакетный файл со следующим содержимым.

     @эхо выключено
    cmd /k cd "C:\ваш\файл\путь"
     

    Откроется командное окно, похожее на то, что вы пытались сделать.


    Подробную информацию о командах Windows смотрите здесь: http://ss64.com/nt/

    Создайте новый файл startCmdLine.bat в своем каталоге и поместите в него эту строку

     call cmd
     

    Вот и все. Теперь дважды щелкните файл .bat. Меня устраивает.

    Звонок можно заменить на пуск, тоже будет работать.

    этот код работает для меня назовите его cmd.bat

     @echo off
    Название Это всего лишь тест
    эхо. 
    :Петля
    установить /p the="%cd%"
    %%
    эхо.
    перейти в петлю
     

    вы можете попробовать:

    shift + щелкните правой кнопкой мыши

    затем нажмите Открыть командную строку здесь

    Внутри данной папки щелкните вверху Адресная строка и введите cmd и нажмите введите Откроется командная строка с текущим адресом папки.

    Можно просто создать bat файл в любом удобном месте и закинуть на него любой файл из нужной директории. Ха-ха. Код для этого:

     cmd
     

    Твой ответ

    Зарегистрируйтесь или войдите

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя электронную почту и пароль

    Опубликовать как гость

    Электронная почта

    Обязательно, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Что это такое и как его открыть?


    Автор: Джей Гитер   | Исправлено: 05 декабря 2018 г.

    Сводка файла CMD

    Расширение файла CMD имеет пять уникальных типов файлов (основным из которых является формат командного файла Windows ) и в основном связан с Microsoft Notepad ( Microsoft Corporation ) и десятью другими программами. Файлы CMD обычно классифицируются как Исполняемые файлы . Другими типами файлов могут быть файлы игры или файлы базы данных.

    Расширение файла CMD можно просмотреть в операционных системах Windows, Mac и Linux. Они поддерживаются как на настольных, так и на мобильных устройствах. Рейтинг популярности файлов CMD — «Низкий», что означает, что эти файлы обычно не встречается на устройстве обычного пользователя.

    Хотите узнать больше о расширении файла CMD? Мы рекомендуем вам просмотреть подробную информацию о файле ниже, чтобы узнать о программном обеспечении, которое открывает файлы CMD, и других советах по устранению неполадок.

    Demond
    Рейн файл

    /11690

    Active

    Состояние
    5

    декабрь

    2018

    .0002 Продукт Solvusoft

    Скачать бесплатно

    Дополнительное предложение для FileViewPro от Solvusoft | ЛСКП | Политика конфиденциальности | Условия | Удалить

    Известные файлы CMD

    5 known file types use this extension

    Leading CMD Type

    .CMD

    Extension: .cmd
    File Type: Windows Command File

    A CMD file contains последовательность команд, выполняемых по порядку, сохраненных в текстовом формате, которые могут выполняться в системах DOS или Windows NT.

    Created by: Microsoft Corporation
    Kind: Executable Files
    Entry: HKEY_CLASSES_ROOT\. cmd

    Software Programs That Open The Windows Command File :


    Блокнот Microsoft корпорации Microsoft

    Windows
    Mac
    Linux

    Notepad++ by Don Ho

    Windows
    Mac
    Linux

    Microsoft WordPad от Microsoft Corporation

    Windows

    Microsoft Windows от Microsoft Corporation

    Windows

    Parallels Desktop for Mac by Parallels

    Mac

    AbiWord by Open Source

    Windows
    Mac
    Linux

    Corel WordPerfect by Corel

    Windows

    Other CMD File Associations

    . CMD

    Extension: .cmd
    File Type: dBASE Program File

    Program file created in dBASE , широко используемая система управления базами данных (СУБД), включающая современный объектно-ориентированный язык программирования.

    Создатель: dBase, LLC
    Kind: Executable Files

    Software Programs That Open dBASE Program File Files:


    dBase by dBase, LLC

    Compatible with:

    Windows

    .CMD

    9Файл 0592

    CMD содержит наборы команд для персонажа, созданного M.U.G.E.N., игровым движком, разработанным Elecbyte и используемым для создания 2D-файтингов.

    Расширение: .cmd
    Тип файла: M. U.G.E.N. Файл команд персонажа
    Создана: Elecbyte
    вид: Файлы игры

    Программные программы. Файлы команд символов:


    Elecbyte M.U.G.E.N by Elecbyte

    Совместимо с:

    Windows
    Mac
    Linux

    .CMD

    Extension: .cmd
    File Type: Пакетный файл OS/2 REXX

    Файл тестового сценария, связанный с языком программирования REXX (реструктурированный расширенный язык eXecutor), языком, разработанным для администратора компьютера. Он находится в каталоге, в котором устанавливается Rexx/SQL, и содержит описательные сообщения об ошибках в случае возникновения каких-либо проблем.

    , созданный: IBM
    вид: Программные файлы
    Программные файлы
    .

    Compatible with:

    OS/2

    .CMD

    Extension: .cmd
    File Type: База данных контактов Summit Contact Manager

    База данных контактов, созданная Summit Central, менеджером по персоналу, менеджером по членству и менеджером коротких курсов.

    , созданный: Mie Software Pty Ltd
    СИНД:. MIE Software Pty Ltd

    Совместимость с:

    Windows

    Дополнительное предложение для FileViewPro от Solvusoft | ЛСКП | Политика конфиденциальности | Условия | Uninstall

    Search Files

    OS Hierarchy
    7 (45.73%)
    10 (44.56%)
    8.1 (5.41%)
    Опыт (2.79%)
    8 (0.97%)

    Browser Hierarchy
    Chrome (58.80%)
    Firefox (11.05 %)
    Internet Explorer (9.04%)
    Edge (8.46%)
    Safari (3,87%)


    Источники проблем с CMD


    Проблемы с открытием файлов CMD

    Нет блокнота Microsoft

    Вы сталкиваетесь с сообщением об ошибке, например «% Open%OS%% Can’t CMD Files» при попытке открыть CMD. Обычно это означает, что Microsoft Notepad не установлен на %%os%%. Вы не сможете дважды щелкнуть, чтобы открыть CMD, потому что ваша ОС не знает, что с ним делать.


    Совет: можно выбрать другую программу, связанную с CMD, чтобы открыть файл, щелкнув «Показать приложения» и найдя приложение.


    Блокнот Microsoft устарел

    Иногда установленная версия Блокнота Microsoft не поддерживает файл командного файла Windows. Если у вас установлена ​​неправильная версия Microsoft Notepad, вам необходимо установить правильную версию. Ваш файл командного файла Windows, вероятно, был создан более новой версией Microsoft Notepad, чем та, которая в настоящее время установлена ​​на вашем компьютере.


    Совет: Изучите файл CMD, щелкнув правой кнопкой мыши и выбрав «Свойства», чтобы узнать, какая версия вам нужна.

    В конечном счете, большинство проблем с открытием файлов CMD связано с установленной неправильной версией Microsoft Notepad.


    Другие причины проблем с открытием CMD

    Хотя на вашем компьютере уже может быть установлен Microsoft Notepad или другое программное обеспечение, связанное с CMD, вы все равно можете столкнуться с проблемами при открытии файлов командных файлов Windows. Другие ошибки открытия CMD могут быть вызваны другими системными проблемами внутри %%os%%. К этим проблемам относятся:

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

    Тест: какое расширение файла является архивным файлом?
    CDP
    PACK
    SIT
    TBH
    ZIG
    Опрос: Сколько различных компьютерных файлов (например, документов, видео, аудио) вы обычно просматриваете или редактируете ежедневно?
    1-5
    6-10
    11-20
    21-50
    50 или более

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

    Дополнительное предложение для FileViewPro от Solvusoft | ЛСКП | Политика конфиденциальности | Условия | Удалить


    Расширения файлов # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    Как написать сценарий CMD | Малый бизнес

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

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

    Понимание CMD и письменных команд

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

    Понимание сценариев CMD

    Утилиту командной строки в Windows можно открыть в любое время, просто набрав «cmd» в Меню Пуск Windows. Здесь вы можете вводить всевозможные команды, чтобы открывать программы, изменять настройки и вносить изменения в работу Windows и ее программ. В долгой истории Microsoft операционных систем CMD i — относительный новичок. В MS-DOS, до выпуска Windows, когда вы хотели запустить сценарий, вы сохраняли его как файл .bat. Хотя сегодня вы все еще можете сохранять файлы с этим расширением, большинство людей используют расширение .cmd. _

    Использование сценария

    CMD для открытия Блокнота

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

    1. Введите CMD в меню «Пуск» Windows и нажмите Enter , чтобы открыть CMD.exe.
    2. Измените каталог с папки вашего текущего имени пользователя на базовый каталог, введя «cd\» и нажав Enter. Теперь он должен читать «C:\>» перед мигающим курсором.
    3. Введите следующую строку и нажмите Введите: start «c:\windows\system32» notepad.exe

    Как только вы нажмете Enter, вы увидите открытый Блокнот. Введенная вами команда сообщает Windows запустить программу notepad. exe , которая находится в папке system32 , которая находится внутри папки Windows на диске C: . Команды CMD не чувствительны к регистру, поэтому вы можете использовать как строчные, так и прописные буквы взаимозаменяемо.

    Создание вашего первого файла сценария

    CMD

    Теперь, когда блокнот открыт, создайте свой первый файл сценария CMD, введя в блокнот ту же строку, которую вы использовали в окне CMD: start «c:\windows\system32» notepad.exe

    Сохраните пакетный файл на рабочий стол, выбрав «Сохранить как» в меню «Файл». Назовите файл «firstscript.cmd» и нажмите «Сохранить». Команды сценария Блокнота должны быть сохранены с расширением .cmd, а не с расширением .txt по умолчанию.

    Дважды щелкните новый файл CMD на рабочем столе. Вы увидите, что окно CMD открывается на долю секунды, а затем закрывается как Блокнот запущен.

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

    Использование Echo и Echo Off

    Хотя окно CMD не было открыто достаточно долго, чтобы увидеть его, по умолчанию оно всегда будет отображать текст, который был введен в файл CMD при запуске. Для более длинных сценариев это может быть неприятно, поэтому обычно рекомендуется отключить это с помощью команды Echo Off в первой строке файла CMD. Сам по себе Echo Off отключает отображение любого текста, следующего за ним. Чтобы команда Echo Off применялась сама к себе, поставьте перед ней символ @. Таким образом, ваш двухстрочный сценарий CMD будет выглядеть так:

    @echo off

    start «c:\windows\system32» notepad.exe

    Создание сценария текстового файла

    Этот сценарий CMD перечислит все файлы, которые у вас есть в папке Program Files, и поместит этот список в новый текстовый файл.

    1. Открыть Блокнот . Введите « @echo off » в первой строке и нажмите Enter.
    2. Во второй строке введите: dir «C:\Program Files» > list_of_files.txt
    3. Выберите «Сохранить как » в меню «Файл» и сохраните файл как «-program» 90 список-скрипт.cmd.»
    4. Дважды щелкните новый текстовый файл на рабочем столе, чтобы просмотреть список файлов и папок.

    Текстовый файл появится в той же папке, где находится сам файл скрипта. Таким образом, если файл сценария находится на вашем рабочем столе, , файл list-of-files.txt также появится на вашем рабочем столе.

    Если вы хотите изменить папку, в которой находится текстовый файл, вы можете указать собственную папку в сценарии. Например, если вы хотите, чтобы он был помещен в папку «Документы», используйте: dir «C:\Program Files» > C:\Users\David\Documents\list_of_files.txt

    Создание сценария системной информации

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

    Приведенный ниже пример сценария предоставит вам основную информацию о вашем компьютере, включая операционную систему и номер версии, версию BIOS, общий объем физической памяти и сетевой адрес вашего компьютера. Чтобы использовать сценарий, введите или скопируйте приведенные ниже строки в новый файл Блокнота и сохраните его с расширением 9.0161 Расширение файла .cmd, , например «my_computer_info.cmd».

    В этом примере ECHO OFF используется для предотвращения окна CMD отображения сценария.

    Команда ECHO используется для отображения определенного текста, а также некоторых знаков равенства (===) в виде строк для организации информации по разделам.

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

    Команда PAUSE указывает программе CMD оставаться открытой. Нажатие любой клавиши на клавиатуре закроет окно.

    @ECHO OFF

    :: Этот сценарий CMD предоставляет вам информацию об операционной системе, оборудовании и сети.

    TITLE Информация о моей системе

    ECHO Пожалуйста, подождите… Сбор информации о системе.

    ЭХО =========================

    ЭХО ОПЕРАЦИОННАЯ СИСТЕМА

    systeminfo | findstr /c:»Имя ОС»

    systeminfo | findstr /c:»Версия ОС»

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

    ECHO BIOS

    systeminfo | findstr /c:»Тип системы»

    ЭХО =========================

    ЭХО ПАМЯТЬ

    системная информация | findstr /c:»Общая физическая память»

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

    ECHO CPU

    wmic процессор получить имя

    ЭХО =========================

    ЭХО СЕТЕВОЙ АДРЕС

    ipconfig | findstr IPv4

    ipconfig | findstr IPv6

    PAUSE

    Использование сценариев для выключения компьютера

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

    При использовании команды выключения необходимо включить два дополнительных переключателя или подкоманды . Первый сообщает компьютеру, что нужно либо выключить, либо перезагрузить. Вы можете использовать либо -s, либо -r. Второй сообщает компьютеру, сколько секунд ждать перед выполнением команды. Для этого вы используете -t, за которым следует количество секунд.

    Чтобы выключить компьютер через одну секунду, используйте: shutdown -s -t 01

    Чтобы перезагрузить компьютер через восемь секунд, используйте: shutdown -r -t 08

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

    Резервное копирование файлов с помощью сценария CMD

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

    Команда Robocopy должна знать, во-первых, какую папку вы хотите скопировать, а во-вторых, где вы хотите разместить копию. И источник, и место назначения должны быть в кавычках.

    Если вы не уверены, какие буквы у вашего диска, откройте File Explorer и щелкните «Мой компьютер».

    Например, если ваше имя пользователя MyName , ваш Документы 9Папка 0008 находится на вашем диске C: , а папка Backup находится на съемном носителе D: диске, , тогда команда будет выглядеть так: \Documents F:\Backup /XA:H /W:0 /R:1 > F:\Backup\backup. log

    Этот пример немного сложнее, так как Robocopy предлагает вам множество вариантов .

    D:\Users\MyName\Documents: папка, для которой требуется создать резервную копию.

    F:\Backup: расположение папки резервного копирования.

    /XA:H: игнорирует скрытые файлы.

    /W:0: ожидает ноль секунд между повторными попытками вместо 30 секунд по умолчанию.

    /R:1 : повторите попытку только один раз, если файл заблокирован.

    > F:\Backup\backup.log: создать журнал резервного копирования, помещенный в папку Backup.

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

    Как создать и запустить пакетный файл в Windows 10

    (Изображение предоставлено: Будущее)

    В Windows 10 пакетный файл обычно имеет расширение «.bat» и представляет собой специальный текстовый файл, содержащий одну или несколько команд, которые выполняются последовательно для выполнения различных действий с помощью командной строки.

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

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

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

    Как создать батник на Windows 10

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

    Создать базовый пакетный файл Windows 10

    Чтобы создать базовый пакетный файл в Windows 10, выполните следующие действия:

    1. Открыть Запустить .
    2. Найдите Блокнот и щелкните верхний результат, чтобы открыть текстовый редактор.
    3. Введите в текстовый файл следующие строки, чтобы создать пакетный файл:

    @ECHO OFF

    ECHO Hello World! Ваш первый пакетный файл был успешно напечатан на экране.

    ПАУЗА

    Приведенный выше сценарий выводит на экран фразу «Привет, мир! Ваш первый пакетный файл был успешно напечатан на экране».

    • @ECHO OFF — Показывает сообщение на чистой строке, отключая подсказку дисплея. Обычно эта строка идет в начале файла. (Команду можно использовать без символа «@», но рекомендуется включить его, чтобы показать более чистый результат.)
    • ECHO — Команда печатает текст после пробела на экране.
    • ПАУЗА — Позволяет окну оставаться открытым после выполнения команды. В противном случае окно автоматически закроется, как только скрипт завершит выполнение. Вы можете использовать эту команду в конце скрипта или после определенной команды при запуске нескольких задач и желании сделать паузу между каждой строкой.

    (Изображение предоставлено Future)
    1. Щелкните меню File .
    2. Выберите параметр Сохранить как .
    3. Подтвердите имя скрипта — например, first_basic_batch.bat .
    • Краткое примечание: Хотя пакетные файлы обычно используют расширения файлов .bat , вы также можете найти их с расширениями файлов .cmd или .btm .

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

    Создать расширенный пакетный файл Windows 10

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

    1. Открыть Пуск .
    2. Найдите Блокнот и щелкните верхний результат, чтобы открыть текстовый редактор.
    3. Введите следующие строки в текстовом файле, чтобы создать более продвинутый пакетный файл Windows 10:

    @ECHO OFF 

    :: В этом пакетном файле подробно описывается конфигурация Windows 10, оборудования и сети.

    TITLE Информация о моей системе

    ECHO Пожалуйста, подождите… Проверка системной информации.

    :: Раздел 1: Информация о Windows 10

    ECHO

    ЭХО WINDOWS INFO

    ЭХО ==========================

    1 системная информация | findstr /c:»Имя ОС»

    информация о системе | findstr /c:»Версия ОС»

    systeminfo | findstr /c:»Тип системы»

    :: Раздел 2: Информация об оборудовании.

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

    ECHO ИНФОРМАЦИЯ ОБ ОБОРУДОВАНИИ

    6 002
  • 2

    6 0009
  • ЭХО ============================

    системная информация | findstr /c:»Общая физическая память»

    wmic cpu get name

    wmic diskdrive get name,model,size

    wmic path win32_videocontroller get name

    wmic path win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution

    :: Раздел 3: Информация о сети.

    ЭХО ===========================

    ЭХО ИНФОРМАЦИЯ О СЕТИ

    ЭХО ===========================

    ipconfig | findstr IPv4ipconfig | findstr IPv6

    START https://support.microsoft.com/en-us/windows/windows-10-system-requirements-6d4e9a79-66bf-7950-467c-795cf0386715

    PAUSE

    Приведенный выше сценарий запускает каждую строку для запроса ряда сведений о системе, и результат будет разделен на три категории, включая «ИНФОРМАЦИЯ О WINDOWS», «ИНФОРМАЦИЯ ОБ ОБОРУДОВАНИИ» и «ИНФОРМАЦИЯ О СЕТИ». Кроме того, команда «СТАРТ» откроет в веб-браузере официальную страницу поддержки с изложением системных требований Windows 10, которые вы можете сверить со своей информацией.

    • @ECHO OFF — Показывает сообщение на чистой строке, отключая подсказку дисплея. Обычно эта строка идет в начале файла.
    • НАЗВАНИЕ — Печатает пользовательское имя в строке заголовка окна консоли.
    • :: — Позволяет писать комментарии и документацию. Эти сведения игнорируются, когда система запускает пакетный файл.
    • ЭХО — Печатает текст после пробела на экране.
    • START — Открывает приложение или веб-сайт в веб-браузере по умолчанию.
    • ПАУЗА — Приказывает окну консоли оставаться открытым после выполнения команды. Если вы не используете эту опцию, окно автоматически закроется, как только скрипт завершит выполнение.

    (Изображение предоставлено Future)
    1. Щелкните меню File .
    2. Выберите параметр Сохранить как .
    3. Введите имя скрипта, например, first_advanced_batch.bat .

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

    Создать активный пакетный файл Windows 10

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

    Чтобы создать неинтерактивный пакетный файл в Windows 10, выполните следующие действия:

    1. Открыть Запустить .
    2. Найдите Блокнот и щелкните верхний результат, чтобы открыть текстовый редактор.
    3. Введите следующую команду для подключения сетевого диска в текстовом файле: net use z: \\PATH-NETWORK-SHARE\FOLDER-NAME /user:YOUR-USERNAME YOUR-PASSWORD

    В команде , замените «\\PATH-NETWORK-SHARE\FOLDER-NAME» для сетевого пути к папке для подключения на устройстве и «YOUR-USERNAME YOUR-PASSWORD» на имя пользователя и пароль, которые аутентифицируют доступ к сетевому ресурсу.

    В этом примере сетевая папка сопоставляется как диск внутри Проводника с буквой диска «Z»: net use z: \\10.1.4.174\ShareFiles

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

    (Изображение предоставлено Future)
    1. Щелкните меню File .
    2. Выберите параметр Сохранить как .
    3. Подтвердите имя скрипта — например, mount-z-network-drive.bat .

    После выполнения этих шагов пакетный файл сопоставит сетевую папку без открытия окна командной строки.

    Мы демонстрируем сценарий только с одной командой, но вы можете включить столько команд, сколько хотите, при условии, что вы пишете их по одной в строке.

    Как запустить пакетный файл в Windows 10

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

    Запуск пакетного файла по запросу

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

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

    Чтобы запустить файл сценария с помощью командной строки в Windows 10, выполните следующие действия:

    1. Открыть Пуск .
    2. Найдите Командная строка , щелкните правой кнопкой мыши верхний результат и выберите параметр Запуск от имени администратора .
    3. Введите следующую команду, чтобы запустить пакетный файл Windows 10, и нажмите Введите : C:\PATH\TO\FOLDER\ИМЯ ПАКЕТА. bat

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

    В этом примере выполняется пакетный файл, расположенный в папке «скрипты» внутри папки «Загрузки»: C:\Users\UserAccount\Downloads\first_basic_batch.bat

    (Изображение предоставлено Future)

    После того, как вы выполните шаги, консоль вернет результаты, и окно не закроется, даже если сценарий не включает команду «ПАУЗА», поскольку вы вызываете сценарий из сеанса консоли, который уже был открыт.

    Проводник

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

    1. Откройте Проводник .
    2. Перейдите к папке с пакетным файлом.
    3. Дважды щелкните файл сценария, чтобы запустить его.
    4. (необязательно) Если команда в пакетном файле требует прав администратора, вам придется запустить сценарий от имени администратора, щелкнув файл правой кнопкой мыши и выбрав параметр Запуск от имени администратора .

    (Изображение предоставлено: Будущее)
    1. Нажмите кнопку Да

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

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

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

    Чтобы запустить сценарий при запуске Windows 10, выполните следующие действия:

    1. Откройте File Explorer .
    2. Откройте папку, содержащую пакетный файл.
    3. Щелкните пакетный файл правой кнопкой мыши и выберите параметр Копировать .
    4. Используйте сочетание клавиш Windows + R , чтобы открыть команду «Выполнить ».
    5. Введите следующую команду: shell:startup

    (Изображение предоставлено: Будущее)
    1. Нажмите кнопку OK .
    2. Выберите параметр Вставить на вкладке «Главная» в папке Автозагрузка . (Или нажмите кнопку Вставить ярлык , чтобы создать ярлык для пакетного файла.)

    (Изображение предоставлено: Будущее)

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

    Запуск пакетного файла с помощью планировщика заданий

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

    1. Открыть Запустить .
    2. Найдите Task Scheduler и щелкните верхний результат, чтобы открыть приложение.
    3. Щелкните правой кнопкой мыши ветку «Библиотека планировщика заданий» и выберите параметр «Новая папка ».
    4. Подтвердите имя папки — например, MyScripts .
    • Краткое примечание: Вам не нужно создавать папку, но рекомендуется хранить систему и ваши задачи отдельно.
    1. Нажмите кнопку OK .
    2. Разверните ветку «Библиотека планировщика заданий» .
    3. Щелкните правой кнопкой мыши папку MyScripts .
    4. Выберите параметр Создать базовую задачу .

    (Изображение предоставлено Future)
    1. В поле «Имя» подтвердите имя задачи — например, SystemInfoBatch .
    2. (Необязательно) В поле «Описание» введите описание задачи.
    3. Нажмите Кнопка «Далее» .
    4. Выберите параметр Ежемесячно .
    • Краткое примечание: Планировщик заданий позволяет выбирать различные триггеры, включая определенную дату, во время запуска или когда пользователь входит в систему. В этом примере мы выберем вариант запуска задачи каждый месяц, но вам может потребоваться настроить дополнительные параметры в зависимости от вашего выбора.

    (Изображение предоставлено: Будущее)
    1. Нажмите на Далее 9кнопка 0008.
    2. В настройках «Пуск» подтвердите день и время запуска задачи.
    3. Используйте раскрывающееся меню «Ежемесячно», чтобы выбрать месяцы года для запуска задачи.

    (Изображение предоставлено Future)
    1. Используйте раскрывающееся меню «Дни» или «Вкл.», чтобы подтвердить дни для запуска задачи.

    (Изображение предоставлено Future)
    1. Нажмите кнопку Next .
    2. Выберите параметр Запустить программу , чтобы запустить пакетный файл.

    (Изображение предоставлено Future)
    1. В поле «Программа/сценарий» нажмите кнопку Browse .
    2. Выберите пакетный файл, который вы хотите выполнить.

    (Изображение предоставлено Future)
    1. Нажмите кнопку Готово .

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

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

    Это руководство предназначено для Windows 10, но те же шаги будут работать и для более старых версий, включая Windows 8.1 и 7. Кроме того, вы можете обратиться к этим инструкциям, если на вашем компьютере установлена ​​Windows 11.

    Дополнительные ресурсы Windows

    Для получения дополнительных полезных статей, обзоров и ответов на распространенные вопросы о Windows 10 и Windows 11 посетите следующие ресурсы:

    • Windows 11 в Windows Central — все, что вам нужно знать
    • Windows 10 в Windows Central — все, что вам нужно знать

    Мауро Хукулак — технический писатель WindowsCentral.com. Его основной задачей является написание подробных инструкций, которые помогут пользователям получить максимальную отдачу от Windows 10 и многих связанных с ней технологий. У него есть опыт работы в сфере ИТ с профессиональными сертификатами Microsoft, Cisco и CompTIA, и он является признанным членом сообщества Microsoft MVP.

    за | Microsoft Узнайте

    Обратная связь Редактировать

    Твиттер LinkedIn Фейсбук Эл. адрес

    • Статья
    • 8 минут на чтение

    Запускает указанную команду для каждого файла в наборе файлов.

    Синтаксис

     для {%% | %} in () do  []
     

    Параметры

    Параметр Описание
    {%% \| %}<переменная> Обязательно. Представляет заменяемый параметр. Используйте один знак процента ( % ), чтобы выполнить команду вместо в командной строке. Используйте двойные знаки процента ( %% ) для выполнения команды вместо в пакетном файле. Переменные чувствительны к регистру и должны быть представлены в алфавитном порядке, например 9.0007 %a , %b или %c .
    ( <набор> ) Обязательно. Указывает один или несколько файлов, каталогов или текстовых строк или диапазон значений, для которых выполняется команда. Скобки обязательны.
    <команда> Обязательно. Указывает команду, которую вы хотите выполнить для каждого файла, каталога или текстовой строки или для диапазона значений, включенных в набор .
    <параметры командной строки> Указывает любые параметры командной строки, которые вы хотите использовать с указанной командой.
    /? Отображает справку в командной строке.
    • Эту команду можно использовать в пакетном файле или непосредственно из командной строки.

    • К команде для применяются следующие атрибуты:

      • Эта команда заменяет % переменная или %% переменная с каждой текстовой строкой в ​​указанном наборе до тех пор, пока указанная команда не обработает все файлы.

      • Имена переменных чувствительны к регистру, являются глобальными, и не более 52 могут быть активны одновременно.

      • Во избежание путаницы с параметрами партии, от %0 до %9 , вы можете использовать любой символ для переменной , кроме цифр от 0 до 9 . Для простых пакетных файлов один символ, например %%f будет работать.

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

    • Параметр set может представлять одну группу файлов или несколько групп файлов. Вы можете использовать подстановочные знаки ( * и ? ) для указания набора файлов. Допустимы следующие наборы файлов:

       (*.doc)
      (*.doc *.txt *.me)
      (янв*.док янв*.рпт фев*.док фев*.рпт)
      (ар??1991.* ап??1991.*)
       
    • При использовании этой команды первое значение в наборе заменяет % переменной или %% переменной , а затем указанная команда обрабатывает это значение. Это продолжается до тех пор, пока не будут обработаны все файлы (или группы файлов), соответствующие значению set .

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

    • Если расширения команд включены (по умолчанию), поддерживаются следующие дополнительные формы для :

      • Только каталоги: Если набор содержит подстановочные знаки ( * или ? ), указанная команда выполняется для каждого каталога (вместо набора файлов в указанном каталоге), который соответствует набору . Синтаксис:

         для /d {%%|%} в () do  []
         
      • Рекурсивный: Обходит дерево каталогов, корнем которого является диск : путь , и выполняет оператор for в каждом каталоге дерева. Если после /r каталог не указан, в качестве корневого каталога используется текущий каталог. Если set — это всего лишь одна точка (.), она только перечисляет дерево каталогов. Синтаксис:

         для /r [[<диск>:]<путь>] {%%|%}<переменная> в (<набор>) сделать <команда> [<командные строки>]
         
      • Итерация диапазона значений: Используйте итеративную переменную, чтобы установить начальное значение ( start #), а затем пройти через заданный диапазон значений, пока значение не превысит установленное конечное значение ( end #). /l выполнит итерацию, сравнивая start # с end #. Если start # меньше end #, команда будет выполнена. Когда итеративная переменная превышает end #, командная оболочка выходит из цикла. Вы также можете использовать минус step # для перехода через диапазон в порядке убывания значений. Например, (1,1,5) генерирует последовательность 1 2 3 4 5, а (5,-1,1) генерирует последовательность 5 4 3 2 1. Синтаксис:

         для /l {%%|%}<переменная> in (,,) do  []
         
      • Итерация и синтаксический анализ файлов: Используйте синтаксический анализ файлов для обработки вывода команды, строк и содержимого файла. Используйте итерационные переменные, чтобы определить содержимое или строки, которые вы хотите изучить, и используйте различные parsingkeywords опции для дальнейшего изменения синтаксического анализа. Используйте параметр токена parsingkeywords , чтобы указать, какие токены следует передавать в качестве итерационных переменных. При использовании без параметра токена /f будет проверять только первый токен.

        Анализ файла состоит из чтения вывода, строки или содержимого файла, а затем разбиения его на отдельные строки текста и разбора каждой строки на ноль или более токенов. Затем вызывается цикл для со значением итерационной переменной, установленным в токен. По умолчанию /f передает первый токен, разделенный пробелами, из каждой строки каждого файла. Пустые строки пропускаются.

        Синтаксисы:

         для /f [] {%%|%}<переменная> in () do  []
        for /f [] {%%|%} in () do  []
        for /f [] {%%|%} in ('') do  []
         

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

        Если вы используете параметр usebackq , используйте один из следующих синтаксисов:

         для /f [usebackq ] {%%|%} in () do  []
        for /f [usebackq ] {%%|%} in ('') do  []
        for /f [usebackq ] {%%|%} in (``) do  []
         

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

        Ключевое слово Описание
        эол= <с> Задает символ конца строки (только один символ).
        пропустить= Задает количество пропускаемых строк в начале файла.
        разделители= Указывает набор разделителей. Это заменяет набор разделителей по умолчанию, состоящий из пробела и табуляции.
        токенов= Указывает, какие токены из каждой строки должны передаваться в цикл для для каждой итерации. В результате выделяются дополнительные имена переменных. m-n задает диапазон от m th до n th токенов. Если последним символом в строке tokens= является звездочка ( * ), выделяется дополнительная переменная, и она получает оставшийся текст в строке после последней проанализированной лексемы.
        использоватьбэкк Указывает запускать строку в обратных кавычках как команду, использовать строку в одинарных кавычках в качестве буквальной строки или, для длинных имен файлов, содержащих пробелы, разрешать имена файлов в , чтобы каждое из них было заключено в двойные -кавычки.
      • Замена переменной: В следующей таблице приведен необязательный синтаксис (для любой переменной I ):

        Переменная с модификатором Описание
        %~I Раскрывает %I , удаляя все окружающие кавычки.
        %~fI Заменяет %I на полное имя пути.
        %~dI Расширяется %I только на букву диска.
        %~pI Расширяет %I только до пути.
        %~nI Расширяет %I только до имени файла.
        %~xI Расширяет %I только до расширения имени файла.
        %~sI Путь расширяется, чтобы содержать только короткие имена.
        %~aI Расширяет %I до атрибутов файла файла.
        %~tI Расширяет %I до даты и времени файла.
        %~zI Расширяет %I до размера файла.
        %~$ПУТЬ:I Выполняет поиск в каталогах, перечисленных в переменной среды PATH, и расширяет %I до полного имени первого найденного каталога. Если имя переменной среды не определено или файл не найден поиском, этот модификатор заменяется пустой строкой.

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

        Переменная с комбинированными модификаторами Описание
        %~dpi Расширяет %I только до буквы диска и пути.
        %~nxI Расширяет %I только до имени файла и расширения.
        %~fsI Расширяет %I до полного имени пути только с короткими именами.
        %~dp$PATH:I Ищет в каталогах, перечисленных в переменной среды PATH, %I и заменяется на букву диска и путь к первому найденному.
        %~ftzaI Расширяет %I до строки вывода, похожей на dir .

        В приведенных выше примерах вы можете заменить %I и PATH другими допустимыми значениями. Допустимое имя переменной вместо завершает синтаксис %~ .

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

    • Анализ строки: Вы можете использовать логику разбора for /f для непосредственной строки, обернув 9 ) обрабатываются как обычные символы.

    • Анализ выходных данных: Вы можете использовать команду вместо /f для анализа выходных данных команды, поместив <команда> в кавычках между скобками. Он рассматривается как командная строка, которая передается дочернему Cmd.exe. Вывод записывается в память и анализируется, как если бы это был файл.

    Примеры

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

     для {%%|%}<переменная> в () do  []
     

    Чтобы отобразить содержимое всех файлов в текущем каталоге с расширением .doc или .txt, используя заменяемую переменную %f , введите:

     для %f в (*.doc *.txt) do введите %f
     

    В предыдущем примере каждый файл с расширением . doc или .txt в текущем каталоге заменяется переменной %f до тех пор, пока не будет отображено содержимое каждого файла. Чтобы использовать эту команду в пакетном файле, замените каждое вхождение %f с %%f . В противном случае переменная игнорируется и отображается сообщение об ошибке.

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

     для /feol=; tokens=2,3* delims=, %i в (myfile.txt) do @echo %i %j %k
     

    Эта команда анализирует каждую строку в myfile.txt . Он игнорирует строки, начинающиеся с точки с запятой, и передает второй и третий токен из каждой строки в тело для (токены разделяются запятыми или пробелами). Тело 9.0007 для оператора ссылается на %i для получения второго маркера, %j для получения третьего маркера и %k для получения всех оставшихся маркеров. Если указанные имена файлов содержат пробелы, заключите текст в кавычки (например, Имя файла).

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *