Как поменять каталог в командной строке

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

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

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

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

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

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

или Flashd2.let
и, в зависимости от того, какой из них присутствует,
присвоить диску букву X:
или Y:

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

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

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

SUBST X: C:\ –

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

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

setletter.bat


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

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

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

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

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


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

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

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

Переменные вызываемого файла будут доступны в вызывающем файле.

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

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

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

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

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


params.bat FIRST second “two words”

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

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

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

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

Команды CMD

Строки командных файлов могут содержать как команды самого
процессора команд CMD, так и имена исполняемых модулей (программ или командных файлов).


– исполняемый файл ping.exe
с параметром yandex.ru
. Расширение .exe
можно не указывать, и данная команда может быть записана так:

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

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

HELP Имя команды

В русифицированной версии Windows необходимо учитывать, что в среде командного процессора символы национального алфавита отображаются в DOS-кодировке, в соответствии с кодовой страницей (code page) 866
. При необходимости, для переключения между кодовыми страницами Windows и DOS используется команда

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


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


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

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

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


– символы белого цвета на черном фоне (используется по умолчанию).


– черные символы на белом фоне.


– светло-желтые символы на черном фоне.


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

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

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

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

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

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

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

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

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

   
Решим следующую задачу – нужно создать архив файлов, находящихся в каталоге
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:

    В версиях 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 лучших программ для диагностики компьютера - PCFAQ.info - интернет журнал о ПК

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

       
    Речь пойдет не о запуске командного файла в определенное время, а
    о выполнении какой-то его части только в определенный интервал времени,
    например, с 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


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

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

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

       
    Этот командный файл создает архивы содержимого папки
    “Мои Документы” пользователей Win2K/XP/7-10, размещая их в каталоги

    C:\ARHIV\Мои документы\Имя пользователя\Дата\время

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

    chcp 866
    – установить кодовую страницу 866 (DOS-кодировка)

    chcp 1251
    – установить кодовую страницу 1251 (Windows-кодировка)

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

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

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

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


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

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

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

    Примеры использования утилиты 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
    – изменить только время доступа, время модификации не изменяется.

    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, можно воспользоваться командой NET. EXE



    NET. EXE STOP < имя службы >

    NET. EXE START < имя службы >



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

    net stop “DNS-клиент”

    net start “DNS-клиент”


    Как видно из приведенной таблицы, например 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 и ARP.

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

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

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

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

    copy nul tstdsk.txt

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

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

    Для обработки файлов определенного типа, например любых с расширением .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

    Простой пример удаления файлов с расширением .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

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

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

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

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

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

    :/>  Как открыть командную строку (терминал, консоль) в Ubuntu?

    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 ) не создаются подкаталоги с теми же именами, которые принадлежат путям исходных копируемых файлов. Для устранения этих недостатком можно использовать немного другой сценарий :

    Для копирования используется команда 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. Бывает полезно для поиска вредоносных программ.

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

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

       
    Допустим, вам нужно из одного и того же командного файла запустить notepad.exe
    и cmd.exe. Если просто вставить строки

    notepad.exe

    cmd.exe

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

    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

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

  • Манипулирование окнами.

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

    cmdow @ /HID
    – скрыть текущее окно

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

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

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

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

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

    (в составе библиотеки libiconv).

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

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

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

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

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

       
    Обычно, это вызвано тем, что вы не учитываете тот факт, что на момент выполнения вашего командного файла переменные среды могут быть совсем другими, чем на момент его написания и запуска из командной строки. Например, в командном файле используется запуск приложения 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
    , описание и примеры использования которых имеются в разделе Список команд CMD Windows
    .

  • Неправильно отображаются русские имена файлов, служб и т.п.

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


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

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

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

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

    APPEND

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

    ARP

    – просмотр и изменение таблиц ARP (Address Resolution Protocol)

    ASSOC

    – просмотр или изменение сопоставлений расширений файлов приложениям

    AT

    – управление планировщиком задач

    ATTRIB

    – изменение атрибутов файлов

    Auditpol

    – управление политиками аудита.

    BASH

    – командная оболочка BASH в подсистеме Windows для Linux (WSL).

    BCDBOOT

    – копирование в системный раздел файлов загрузки и создание
    нового хранилища конфигурации загрузки (BCD)

    BCDEDIT

    – редактирование хранилища данных конфигурации загрузки (BCD)

    BOOTCFG

    – редактирование параметров загрузки в файле boot.ini

    BOOTIM

    – вызов меню загрузки и восстановления (Выбор действия) Windows 10

    BOOTREC

    – восстановление загрузочных записей и конфигурации загрузки Windows

    BOOTSECT

    – редактирование загрузочных секторов для обеспечения загрузки NTLDR или BOOTMGR

    BREAK

    – включить или выключить обработку комбинации клавиш CTRL+C в DOS

    CACLS

    – редактирование списков управления доступом к файлам (ACL – Access Control List)

    :/>  Минимальные системные требования для windows 7

    CALL


    – вызов из командного файла подпрограмм или других командных файлов

    CD


    – смена каталога (Change Directory)


    CHGLOGON


    – изменение настроек сервера терминалов, аналогично CHANGE LOGON


    CHGPORT


    – изменение настроек сервера терминалов, аналогично CHANGE PORT


    CHCP


    – просмотр или изменение текущей кодовой страницы


    CHKDSK

    – проверка диска (Check Disk)

    CheckNetIsolation

    – управление доступом приложений к интерфейсу замыкания на себя (localhost) в Windows 10

    CHKNTFS

    – проверка признака ошибки файловой системы и управление проверкой диска при загрузке Windows

    CHOICE

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

    CIPHER

    – отображение или изменение шифрования файлов на томах NTFS

    CLEARMGR

    – управление очисткой дисков Windows

    CLIP

    – перенаправление вывода утилит командной строки в буфер обмена Windows

    CLS

    – очистка экрана в командной строке

    CMD

    – запуск новой копии интерпретатора командной строки

    CMDKEY

    – создание, отображение, удаление и сохранение имен пользователей и паролей

    COLOR

    – изменение цвета текста и фона в окне CMD

    COMMAND
    – запуск новой копии интерпретатора командной строки MS-DOS

    COMP

    – сравнение содержимого файлов

    COMPACT

    – управление сжатием и распаковкой файлов в разделах NTFS

    CONVERT

    – преобразование файловой системы из FAT в NTFS

    COPY

    – копирование файлов и каталогов

    Cscript

    – сервер сценариев Windows с консольным интерфейсом

    DATE

    – отображение или изменение даты

    DEBUG

    – запуск отладчика DOS-Windows XP

    DEFRAG

    – дефрагментация диска

    DEL

    – удаление одного или нескольких файлов

    DevCon

    – управление устройствами в командной строке

    DIANTZ


    — тоже что и MAKECAB, создание архивов .cab.

    DIR


    – отображение списка файлов и каталогов


    DISKCOMP


    – сравнение содержимого двух гибких дисков


    DISKCOPY

    – копирование содержимого одного гибкого диска на другой


    DISKPART

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


    DISM


    – управление компонентами образрв WIM.


    DISPDIAG

  • – вывод дампов с диагностической информацией о графической подсистеме.

    DJOIN

    – автономное присоединение компьютера к домену.

    DOSKEY

    – редактирование и повторный вызов команд Windows, создание макросов DOSKey

    DRIVERQUERY

    – отобразить информацию об установленных драйверах.

    DxDiag

    – средство диагностики DirectX.

    EDIT

    – запуск текстового редактора

    ENDLOCAL

    – конец локальных изменений переменных окружения в командном файле

    ERASE

    – аналогично команде DEL – удаление файлов

    ESENTUTL
    – обслуживание баз данных Extensible Storage Engine для Windows

    EVENTCREATE

    – запись сообщения в журнал событий Windows

    EXIT

    – выход из процедуры или командного файла

    EXPAND

    – распаковка сжатых файлов CAB-файлов.

    EXTRACT

    – извлечение содержимого, распаковка CAB-файлов в Windows (EXTRAC32)

    FC

    – сравнение содержимого файлов

    FIND

    – поиск строки символов в файле

    FINDSTR

    – поиск строк в файлах с использованием регулярных выражений

    FOR

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

    FORFILES

    – выполнение указанной команды для каждого файла из заданной группы

    FORMAT

    – форматирование диска

    FSUTIL

    – управление файловой системой

    FTP

    – консольный FTP-клиент

    FTYPE

    – просмотр и изменение расширений файлов и сопоставленных им приложений

    GETMAC

    – отображение физического адреса сетевого адаптера (MAC-адреса)

    GOTO

    – команда безусловного перехода в командном файле


    GPRESULT

    – отображение результирующей политики (RSoP)

    GPUPDATE

    – обновление групповых политик.

    HELP


    – вызов справки командной строки Windows

    HOSTNAME


    – отображение имени компьютера


    iCACLS


    – управление списками доступа (ACL)


    IF

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


    IPCONFIG

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

    LABEL

    – редактирование меток тома дисков

  • LicensingDiag

    – диагностика лицензирования Windows 10 и старше

  • LOGMAN

    – управление монитором оценки производительности системы

    LOGOFF

    – завершение сеанса пользователя

    MAKECAB


    – создание сжатых файлов формата CAB

    MBR2GPT


    – преобразование дисков MBR в GPT


    MEM
    – вывод справки об использовании памяти в MS-DOS

    MD


    – создание нового каталога

    MKLINK


    – создание символической ссылки на файл или каталог

    MODE


    – конфигурирование системных устройств в среде CMD


    MORE


    – постраничный вывод в консоли


    MOUNTVOL

    – управление точками монтирования томов


    MOVE

    – перемещение файлов и каталогов

    MOVEFILE

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

    MSG

    – отправка сообщений пользователям.

    MSTSC

    – подключение к удаленному рабочему столу.

    NBTSTAT

    – просмотр статистических данных NETBIOS через TCP/IP (NetBT)

    NET

    – управление ресурсами локальной сети

    NETCFG

    – отображение и изменение конфигурации компонентов сети

    NETSH

    – командная сетевая оболочка (Network Shell)

    NETSTAT

    – отображение статистики сетевых соединений

    NSLOOKUP

    OPENFILES

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

    PATH

    – отображение или изменение путей поиска исполняемых файлов

    PATHPING

    – трассировка маршрута с возможностью оценки качества участков трассы

    PAUSE

    – пауза при выполнении командного файла

    PING

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

    PKGMGR

    – управление программными пакетами Windows

    PNPUTIL

    – конфигурирование драйверов устройств PnP

    POPD

    – возврат в каталог, ранее запомненный с помощью команды PUSHD

    POWERCFG

    – настройка параметров системы электропитания Windows

    PowerShell_ISE

    – запуск интегрированной среды разработки сценариев PowerShell

    PRINT

    – печать текстового файла

    PROMPT

    – изменение строки приглашения в консоли

    PUSHD

    – сохранить текущий путь каталога и перейти в указанный

    PSR

    – записать действия пользователя в Windows 7/8.1/10 ( P
    roblem S
    teps R
    ecorder)

    QPROCESS

    – отобразить состояние процессов

    QUERY

    – опросить состояние процессов и сеансов пользователей

    RASDIAL
    – управление сеансами удаленного доступа

    RASPHONE
    – управление сеансами удаленного доступа

    RD

    – удаление каталога

    REAGENTC

    – адимнистрирование стреды восстановления Windows

    RECOVER

    – восстановление файлов на поврежденном диске

    REG

    – утилита командной строки для работы с реестром Windows

    REGEDIT

    – импорт и экспорт данных реестра Windows

    REGSVR32

    – регистрация или отмена регистрации DLL

    REGINI

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

    RENAME (REN)

    – переименование файлов



    REPLACE


    – замена или добавление файлов в катологах

    RESET

    – сброс сеанса удаленного рабочего стола (RDP сессии)


    RMDIR

    – удаление каталога

    ROBOCOPY

    – утилита резервного копирования и синхронизации каталогов (Robust File and Folder Copy)

    ROUTE


    – управление таблицей маршрутизации

    RUNAS

    – запуск приложения от имени другого пользователя


  • RUNDLL32

  • – запуск DLL в качестве приложения


    SC

    – управление службами Windows (Service Control)

    SCHTASKS

  • – управление планировщиком задач

  • SCLIST

    – отображение списка системных служб

    ScriptRunner

    – запуск одного или нескольких скриптов в Windows 10

    SET


    – отображение и изменение переменных среды окружения Windows

    SETLOCAL


    – установка локальных переменных в командном файле

    SETX


    – утилита для создания системных переменных


    SFC


    – проверка и восстановление системных файлов Windows


    SHIFT

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


    SHUTDOWN

    – выключение или перезагрузка компьютера

    SLEEP

    – задержка по времени в пакетном файле

    SLMGR

    – управление лицензированием программного обеспечения Windows

    SORT

    – сортировка строк в текстовом файле

    START

    – запуск приложения или командного файла

    STORDIAG


    – диагностика системы хранения данных в Windows 10

    SUBST


    – назначение (отмена назначения) каталогу буквы диска

    SxSTrace


    – диагностическое средство трассировки компонент системы


    SYSTEMINFO


    – отображение информации о системе


    TAKEOWN

    – изменение владельца файла или каталога


    TAR

    – архивирование данных архиватором tar в Windows 10


    TASKKILL

    – завершение процессов на локальной или удаленной системе

    TASKLIST

    – отображение списка выполняющихся приложений и служб Windows

    TIME

    – отображение и установка системного времени

    TELNET

    – telnet-клиент Windows

    TFTP

    – TFTP-клиент Windows

    TIMEOUT

    – задержка в пакетных файлах

    TITLE

    – изменение заголовка окна CMD. EXE

    TRACERT

    – трассировка маршрута к удаленному узлу

    TREE

    – отображение структуры каталога в графическом виде

    TSCON

    – подключение к сессии удаленного рабочего стола (RDP).

    TSDISCON

    – отключение сессии удаленного рабочего стола (RDP).

    TSKILL

    – завершение процессов, адаптированное для среды сервера терминалов (RDP).

    TYPE

    – вывод на экран содержимого текстового файла

    TypePerf
    – вывод сведений о производительности на экран или в журнал

    TZUTIL

    – управление часовыми поясами в среде Windows

    VaultCmd

    – администрирование учетных данных Windows.

    VER

    – отображение версии операционной системы

    VERIFIER

    – тестирование драйверов Windows.

    VERIFY

    – управление режимом проверки записываемых файлов

    VOL

    – вывод данных метки тома

    W32TM

    – управление службой времени Windows

    WAITFOR
    – организация обмена сигналами между компьютерами

    WEVTUTIL

    – управление событиями в Windows

    WHERE

    – определение места расположения файлов

    WHOAMI

    – вывод имени текущего пользователя

    WINDIFF

    – сравнение содержимого файлов

    Winget

    – установка, обновление, перенос и удаление приложений в Windows 10 и более поздних версий.

    WinMgmt

    – обслуживание инструментария управления Windows (WMI)

    WINRM
    – удаленное управление Windows из командной строки

    WINRS
    – удаленная командная строка (Remote Shell)

    WINSAT

    – средство проверки производительности Windows

    WMIC

    – выполнение команды WMI в командной строке

    WSCollect

    – получить CAB-файл с копиями журналов Windows 10 на рабочем столе

    Wscript

    – сервер сценариев Windows с графическим интерфейсом

    WSL

    – выполнение команд Linux и конфигурирование параметров подсистемы Windows для Linux (WSL) в Windows 10

    WSLconfig


    – конфигурирование параметров подсистемы Windows для Linux (WSL) в Windows 10

    WUSA

    – автономная установка обновлений Windows

    XCOPY

    – копирование файлов и папок

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


      Настройка командной строки
    Windows.

      Работа с командной строкой Windows

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


     Запуск приложений от имени администратора без запроса UAC


     
    Работа с сетью в командной строке.

      Подсистема Linux в Windows 10



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