Когда ко мне обратились с вопросом о том, как быстро вывести список файлов в текстовый файл, я понял, что ответа я не знаю. Хотя задача, как оказалось, достаточно часто встречающаяся. Это может потребоваться для передачи списка файлов специалисту (для решения какой-то проблемы), самостоятельного ведения журнала содержимого папок и других целей.
Решено было устранить пробел и подготовить инструкцию на эту тему, в которой будет показано, как получить список файлов (и вложенных папок) в папке Windows средствами командной строки, а также о том, как автоматизировать этот процесс, если задача возникает часто.
Получение текстового файла с содержимым папки в командной строке
Сначала о том, как сделать текстовый документ, содержащий список файлов в нужной папке, вручную.
Готово. В результате будет создан текстовый файл, содержащий необходимую информацию. В команде выше, данный документ сохраняется в той же папке, список файлов из которой требуется получить. Можно также убрать вывод в текстовый файл, в этом случае список будет отображаться только в командной строке.
Кроме этого, для пользователей русскоязычной версии Windows следует учитывать то, что файл сохраняется в кодировке Windows 866, то есть в обычном блокноте вместо русских символов вы увидите иероглифы (но можно использовать альтернативный текстовый редактор для просмотра, например, Sublime Text).
Получаем список файлов с помощью Windows PowerShell
Вы также можете получить список файлов в папке используя команды Windows PowerShell. Если вы хотите сохранить список в файл, то запустите PowerShell от имени администратора, если просто просмотреть в окне — достаточно простого запуска.
Выше перечислены далеко не все параметры Get-Childitem, но в рамках описываемой в этом руководстве задачи, думаю, их будет достаточно.
Утилита Microsoft Fix it для печати содержимого папки
На странице https://support.microsoft.com/ru-ru/kb/321379 присутствует утилита Microsoft Fix It, добавляющая в контекстное меню проводника пункт «Print Directory Listing», выводящий список файлов в папке на печать.
Несмотря на то, что программа предназначена только для Windows XP, Vista и Windows 7, она успешно сработала и в Windows 10, достаточно было запустить ее в режиме совместимости.
Дополнительно, на той же странице показан порядок ручного добавления команды вывода списка файлов в проводник, при этом вариант для Windows 7 подойдет и для Windows 8.1 и 10. А если вам не требуется вывод на печать, вы можете немного подправить предлагаемые Microsoft команды, удалив параметр /p в третьей строке и полностью убрав четвертую.
How to List all the files in a folder using CMD
Enter “dir” to list the files and folders contained in the folder.
How to List all the files in a folder and subfolder using CMD
If you want to list the files in all the subfolders as well as the main folder, enter:
The lists can be quite long and we will create a file containing the list in order to be very easy. You can rename multiple files at once using CMD.
How to list specific file using wildcards
The dir command can also be used to search for specific files and directories by using wildcards. For example, to list files or directories that begin with the letter “B” you could type:
To list only the items starting with the B letter.
How to Display Based on File Attributes
The file “listoffiles.txt” will be created automatically in the working folder.
Give the full pathname to create the file elsewhere. For example:
Could be used to place the list on an external drive D:
How to create a text file listing only certain types of files
You may want a list of certain types of files such as pdf files. The dir command allows the use of the wildcard symbol *, which adds very useful functionality. Here are some examples.
How to create a list of all the PDF files in a folder and its subfolders:
The command is:
The command will create a list of PDF files only.
A simpler format:
The commands as written will make lists that include information about files such as size and date of creation. A simpler list containing only file names (with full path) can be obtained with the switch “/b”. An example would be:
You can also change extension of multiply files using the command line.
Как отображать только файлы без имен папок
Добавление /a-d к команде удаляет имена каталогов, поэтому все, что у нас есть, это имена файлов.
Как отображать результаты в столбцах
Вы можете использовать переключатель /D для отображения результатов в двух столбцах вместо одного. Когда вы отображаете результаты таким образом, в командной строке не отображается дополнительная информация о файле (размер файла и т. д.) — только имена файлов и каталогов.
Как отображать результаты строчными буквами
Переключатель /L отображает все имена файлов и папок в нижнем регистре.
Показать результаты, отсортированные по времени
Использование переключателя /T вместе с буквенным кодом позволяет сортировать результаты по разным временным меткам, связанным с файлами и папками. Эти буквенные коды включают:
Ключ всех переключателей
Ниже перечислены все переключатели, которые можно использовать для создания сложного списка:
Можно комбинировать несколько атрибутов, например. / A: HD-R
можно комбинировать несколько атрибутов, например. / О:ГЕН
Количество отображаемых цифр определяется форматом ShortDate, установленным в Панели управления.
Заключение
Это все о способах вывода списка файлов в cmd. Не только, но и играя, чтобы получить определенный результат, например, экспортировать их в текстовый файл или перечислить только определенные типы файлов.
Команда DIR
Формат командной строки:
Параметры командной строки:
/A – Вывод файлов с описаниями атрибутами:
D Каталоги
R Доступные только для чтения
H Скрытые файлы
Файлы для архивирования
S Системные файлы
Префикс “-” имеет значение НЕ
-S НЕ системные файлы.
/B – Вывод только имен файлов.
/C – Применение разделителя групповых разрядов для вывода файлов размеров (по умолчанию). Для использования этого служебного положения ключ /-C.
/D – Вывод списка в несколько столбцов с сортировкой по столбцам.
/L — Использование действующего регистра для имен файлов.
/N – Отображение имен файлов в крайнем случае с правами столбца.
/O – Сортировка списка отображаемых файлов.
Порядок: N По имени (алфавитная), S По размеру (сперва меньшие), E По расширению (алфавитная), D По дате (сперва более старые), G Начать список в каталогах. Префикс “-” имеет значение НЕ
/P – Пауза после заполнения каждого экрана.
/Q – Вывод подтверждения о владельце файла.
/R – Отображение альтернативных потоков.
/S – Вывод его списка файлов из каталога и подкаталогов.
/T – Выбор поля времени для отображения и сортировки
время:
C Создание (время создания – Создать)
Последнее использование (последний доступ – Доступ )
W Последнее изменение (последняя модификация Write)
/W – Вывод списка в несколько столбцов.
/X – Отображение широкого спектра имен для файлов, выявление ошибок не соответствует стандарту 8.3. Формат аналогичен полученному с ключом /N, но содержит имена файлов, которые вы получаете слева от длинных. Если короткого имени файла нет, вместо него вы потеряли пробелы.
/4 – Вывод номера года в четырехзначном формате
Стандартный набор ключей можно сохранить в переменную среду DIRCMD. Для отмены их действия введите те же ключи с префиксом “-“, например: /-W.
Примеры использования команды DIR
ДИР /? – отобразить справку по игре команды.
DIR – отобразить список файлов и подкаталогов широкого каталога.
DIR C:WINDOWS*.dll – отобразить список файлов с расширением dll из каталога
C:WINDOWS
DIR C:WINDOWSSYSTEM32X*.* – отобразить список файлов из каталога
C:WINDOWSSYSTEM32, имена которых начинаются с символа X
КАТАЛОГ C:WINDOWSSYSTEM32*Y. EXE – отобразить список файлов с расширением .exe из каталога
C:WINDOWSSYSTEM32, имена возвращаются символом Y
DIR C:WINDOWSsystem32???t.* – отобразить список файлов, имена которых имеются
3 любых символа ( ??? ) и символ t
DIR C:WINDOWSSYSTEM32*.* /A:H – отобразить список скрытых файлов и подкаталогов из каталога C:WINDOWSSYSTEM32
DIR C: /A:-AH – отобразить список скрытых ( H ) файлов и подкаталогов из корневого каталога диска C: без атрибута “Архивный” ( -A )
DIR C: /A:DH – отобразить список скрытых каталогов в корне диска C:
dir c: /a:DH /d – тоже самое, но с набором информации несколько в столбцов, с сортировкой имен в алфавитном порядке. Пример результата:
Том в устройстве C имеет метку C
Серийный номер тома: 1884-ABEC
Содержимое папки c:
0 файлов 0 байт
5 папок 103 593 283 584 байт свободно
Та же информация, но параметр /D не задан:
0 файлов 0 байт
Для сортировки имен отображаемых файлов и каталогов используется параметр /O
/O:-D – в обратном порядке ( от новых к старым )
/O:G – сначала отображать список каталогов, затем – файлов.
Использование параметра /T позволяет отсортировать списки файлов и каталогов в соответствии с отметками времени ( Time Stamp ), хранящимися в
файловой системе Windows для каждого из них:
dir %temp%*.* /a:H /TC – отобразить все скрытые файлы и папки в каталоге временных файлов, заданном переменной среды окружения TEMP, и отсортировать их в порядке возрастания даты создания.
dir %SystemRoot%system32*.exe /b /a:H /TA – отобразить список скрытых исполняемых файлов в системном каталоге и отсортировать их по времени последнего доступа.
DIR C: /X – отобразить список файлов и каталогов в корневом каталоге диска C:
с отображением коротких имен для файлов, чьи имена не соответствуют
стандарту 8.3. Стандарт 8.3 означает, что для имени файла отводится не более 8 символов, а для расширения – не более 3-х. Этот стандарт использовался в устаревших
операционных системах семейства MS-DOS, не поддерживавших длинные имена файлов.
Длинные имена преобразуются в короткие с использованием первых шести символов и конструкции ~N, где N – это порядковый номер для
имен, имеющих одинаковое начало и разное окончание после 8-го символа:
DOCUMENT – имя каталога содержит 8 символов и не преобразуется в стандарт 8.3
DOCUMENTS – имя содержит 9 символов и в формате 8.3 представлено как
DOCUME~2
Documents and Settings – представлено как DOCUME~1 поскольку
длинное имя файла преобразуется в стандарт 8.3 с учетом строчных и заглавных
символов, а коды строчных букв следуют в таблице символов перед кодами
заглавных.
Параметры командной строки команды DIR можно определить в переменной окружения
DIRCMD.
SET DIRCMD=/O:N /B /P – определить параметры /O, /B и /P.
После этого, выполнение команды DIR без параметров будет аналогично
выполнению команды:
DIR /O:N /B /P
Если в командной строке команды DIR задан параметр, определенный в переменной DIRCMD, то его значение более приоритетно, и будет использоваться в процессе выполнения данной команды.
Для расширения возможностей команды DIR можно воспользоваться объединением ее в цепочку с командой поиска текстовой информации FIND
Для обработки отдельных полей из строк вывода результатов команды DIR можно воспользоваться командой FOR
Параметр командной строки /R применим только в Windows 7 и более поздних версиях. Он используется для отображения альтернативных потоков файлов в файловой системе NTFS.
dir /r – отобразить список файлов текущего каталога с именами альтернативных потоков.
dir /r proxylist.zip – отобразить список альтернативных потоков файла proxylist.zip.
Пример отображаемой информации:
455 881 proxylist.zip
26 proxylist.zip:$CmdZnID:$DATA
26 proxylist.zip:Zone. Identifier:$DATAАльтернативные потоки NTFS, или как Windows определяет, что файл был загружен из Интернет
Весь список команд CMD Windows
Командная строка Windows является стандартным средством диагностики, настройки и управления компонентами операционной системы и прикладным программным обеспечением. В отличие от графической среды пользователя, командная строка является более гибким и универсальным инструментом, позволяющим решать многие задачи администрирования системы стандартными средствами Windows без установки дополнительного программного обеспечения.
Способы запуска командной строки
Ссылки на материалы по настройке командной строки и приемах работы с ней размещены в конце страницы.
Справочник по командам 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)
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 – отображение статистики сетевых соединений
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 (Problem Steps Recorder)
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 в командной строке.
– Выдача на экран значения ERRORLEVEL.
– Диалог с пользователем.
– Задержки в командных файлах.
– Определение текущей версии Windows.
– Поиск в локальной сети компьютеров с запущенным приложением.
– Поиск компьютеров с запущенным приложением по списку на основе сетевого окружения.
– Выключение компьютеров по списку, созданному на основе сетевого окружения.
– Поиск в локальной сети включенных компьютеров.
– Работа с дисками, файлами и каталогами.
– Работа с графическими приложениями из командной строки.
– Перекодировка текстовых файлов .
– Часто встречающиеся ошибки при написании командных файлов.
Общие сведения о командном процессоре Windows.
Командные файлы (пакетные файлы, скрипты, сценарии, ”батники”) – это обычные текстовые файлы с расширением .bat или .cmd, строки которых представляют собой специальные команды командного процессора (интерпретатора команд ) и/или имена исполняемых файлов с параметрами. Командный процессор – это специальная программа, являющаяся обязательным элементом практически любой операционной системы, главным назначением которой, является предоставление пользователю возможности выполнения определенных программ без их компиляции и создания исполняемых файлов. Для операционных систем DOS и Windows9X в качестве интерпретатора команд использовался командный процессор command.com, для всех остальных ОС семейства Windows ( NT/2k/XP/Vista/7/8/10 и старше) – cmd.exe.
Несмотря на непрерывное совершенствование средств создания и выполнения сценариев с использованием объектно-ориентированных языков, обычная командная строка и простые командные файлы, по-прежнему остаются основным инструментом для выполнения рутинных действий, диагностики сетевых проблем, автоматизации процессов резервного копирования и т.п. При всех недостатках реализации командного процессора в Windows, он был и остается важнейшим инструментом администрирования, диагностики и управления системой.
Современная реализация командного процессора CMD кроме классического применения, позволяет также использовать возможности Инструментария управления Windows (WMI –Windows Management Instrumentation), сценарии Windows Script Host (WSH) и даже оболочки (shell) операционных систем Linux без установки стороннего программного обеспечения, поскольку в современных Windows, начиная с Windows 10, в качестве стандартного компонента системы может применяться Подсистема Windows для Linux (WSL – Windows Subsystem for Linux), что позволяет объединять в командных файлах исходные тексты CMD и, например, – bash.
Как уже упоминалось выше, командный файл – это обычный текстовый файл с набором команд, которые последовательно выполняются командным процессором CMD Windows (cmd.exe). Командный процессор последовательно считывает и выполняет команды, которые представляют собой своеобразную программу, реализующую определенный алгоритм. Естественно, как и в любой другой среде программирования, программирование в командной строке подчиняется определенным правилам и командные файлы должны им полностью соответствовать.
Команды 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.
Специальные символы CMD
Работа с командным процессором предполагает использование двух стандартных устройств – устройства ввода (клавиатура) и устройства вывода (дисплей). Однако, имеется возможность изменить стандартно используемые устройства ввода-вывода с помощью специальных символов – символов перенаправления
– перенаправление вывода
– перенаправление ввода
Для вывода справки не на экран а, например, в файл с именем help.txt, можно использовать следующую команду:
Простейший пример перенаправления ввода:
cmd.exe < commands.txt – командный процессор не будет ожидать ввода команд с клавиатуры, а считает их из файла commands.txt. Фактически, указанный текстовый файл в данном случае является командным файлом.
При запуске командного процессора можно указать конкретную команду в качестве аргумента командной строки:
cmd.exe /C HELP FOR – выполнить команду HELP FOR и завершиться (параметр командной строки или ключ /C)
cmd.exe /K HELP FOR – выполнить команду HELP FOR и перейти в режим ожидания дальнейшего ввода команд (ключ /K)
Подробную справку по использованию cmd.exe можно получить, введя в качестве аргумента ключ /?
& – одиночный амперсанд используется для разделения нескольких команд в одной командной строке.
команда1 & команда2 – выполняется первая команда, затем вторая команда.
&& – удвоенный амперсанд между двумя командами, означающий условное выполнение второй команды. Она будет выполнена, если код завершения (или код возврата) первой команды равен нулю, т.е. команда выполнена успешно. Успешность
выполнения команды определяется значением специальной переменной среды ERRORLEVEL.
команда1 && команда2 – выполняется команда1, а команда2 выполняется, только если первая была выполнена успешно.
Команду, следующую после знаков объединения, не нужно заключать в
двойные кавычки, иначе командный процессор удвоит их и сообщит об ошибке.
Выполнение командной строки
cmd.exe /C “HELP IF” & ”HELP IF”
Завершится выполнением первой команды и сообщением об ошибке для второй:
“”HELP” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Как и в любом другом языке программирования, в сценариях CMD невозможно обойтись без переменных. Для получения их значения применяется специальный символ – знак процента % . Строка, заключенная в знаки процента интерпретируется как значение переменной, например:
Символ ^ , являющийся последним символом строки, используется как признак продолжения предыдущей. Это относится как к тексту, так и к командам.
Использование переменных окружения в командных файлах.
При работе с командными файлами невозможно обойтись без переменных окружения (environments) – переменных, значения которых определяют среду, в которой выполняются команда или пакетный файл. Часто их называют переменными среды. Значения, принимаемые этими переменными формируются при
загрузке Windows, регистрации пользователя в системе, старте или завершении
некоторых приложений, и, кроме того, могут быть заданы с помощью специальной
команды
SET переменная = значение
SETX переменная = значение
Первая присваивает значение переменной, действующее до завершения текущей сессии командной строки. Вторая – значение, действующее постоянно.
Как уже упоминалось выше, значение, присвоенное какой-либо переменной, доступно для обработки в командной строке или в командном файле с использованием ее имени, заключенного в знаки процента – % . Системные переменные позволяют получить сведения об аппаратной и программной среде, в которой выполняется командный файл, что позволяет реализовать его исполнение на разных компьютерах, независимо от их конкретной конфигурации и пользовательских настроек. Например, в командном файле используется вывод содержимого системного каталога C:Windows :
DIR C:Windows
Алгоритм, реализуемый данным командным файлом, будет прекрасно выполняться до тех пор пока не встретится компьютер с Windows установленной не на диск C:, а например, на D: Чтобы этого не происходило, желательно использовать системную переменную WINDIR, принимающую значение пути системного каталога:
На практике, с помощью команды SET обычно задается и модифицируется путь поиска исполняемых программ
– переменная окружения PATH.
SET PATH=C:Windows; C:windowssystem32
Данная команда определяет, что поиск исполняемых файлов будет выполняться в
каталоге C:Windows и, если результат неуспешен, в
C:windowssystem32
При необходимости выполнить программу, например, myedit.exe, размещенную в
каталоге C:NewProgs необходимо либо указать полный путь исполняемого файла, либо сделать текущим каталогом каталог с программой и использовать только его имя. Если в командной строке не задан полный путь, а только имя
исполняемого файла – myedit.exe
то сначала будет выполняться поиск файла myedit.exe в текущем каталоге, и если
он не будет найден – в каталогах, список которых определяется значением переменной
PATH. Символ ; является разделителем элементов в списке путей поиска.
Если в приведенном примере, текущим каталогом не является
C:NewProgs, и в остальных каталогах, заданных значением переменной
PATH, нет исполняемого файла myedit.exe, то попытка его запуска
завершится ошибкой. Однако, если модифицировать значение переменной PATH, добавив в нее требующийся каталог, то указание полного пути исполняемого файла становится необязательным.
Команда
изменит текущее значение PATH,
добавив каталог C:NewProgs в начало списка. Для добавления каталога в конец списка используется несколько иная конструкция:
SET PATH=%path%; C:NewProgs
Выполнение команды SET без параметров позволяет получить текущие
значения переменных окружения:
NUMBER_OF_PROCESSORS=1 – количество процессоров
OS=Windows_NT- тип ОС
Path=C:WINDOWSsystem32; C:WINDOWS;C:Program FilesFar – путь поиска исполняемых файлов.
PATHEXT=. COM;EXE;BAT;CMD;VBS;VBE; . JS;JSE;WSF;WSH – расширения для исполняемых файлов.
PROCESSOR_ARCHITECTURE=x86 – архитектура процессора.
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD – идентификатор процессора.
PROCESSOR_LEVEL=6 – уровень (номер модели) процессора.
PROCESSOR_REVISION =0801 – версия процессора.
ProgramFiles=C:Program Files – путь к папке “Program Files”
SystemDrive=C: – буква системного диска.
SystemRoot= C:WINDOWS – каталог ОС Windows.
Значения некоторых переменных по команде SET не отображаются, хотя и присутствуют в системе. В основном, это переменные, принимаемые значения которых динамически изменяются:
%CD% – Принимает значение строки текущего каталога.
%DATE% – Принимает значение текущей даты.
%TIME% – Принимает значение текущего времени.
%RANDOM% – Принимает значение случайного десятичного числа в диапазоне 1 -32767.
%ERRORLEVEL% – Принимает текущее значение кода завершения задачи ERRORLEVEL
%CMDEXTVERSION% – Принимает значение версии командного процессора CMD. EXE для расширенной обработки команд.
%CMDCMDLINE% – Принимает значение строки, которая вызвала
командный процессор.
Значения, принимаемые переменными окружения, могут быть расширены с помощью
специального признака – символа ” ~ “, что позволяет получить их частичное
значение, или изменить его подменой какой-либо части. Практические примеры использования расширений переменных будут рассмотрены ниже.
Подробное описание команд с примерами их использования имеется в разделе Список команд CMD Windows.
Передача параметров командному файлу.
Очень полезной особенностью работы с командными файлами является
возможность получать значения параметров командной строки и использовать их
в операциях внутри самого командного файла.
params.bat FIRST second “two words”
Параметры командной строки, содержащие пробелы должны заключаться в двойные кавычки.
При обработке входных параметров необходимо знать, были ли они вообще заданы в командной строке. Для проверки наличия каких-либо входных параметров, передаваемых
командному файлу, можно проверить, является ли значение переменной %1
пустым, что можно сделать, заключив ее, например в двойные кавычки, и проверив полученный результат на наличие этих кавычек, следующих подряд:
REM пробел текст
Строки, начинающиеся с REM пробел, считаются комментариями и командным процессором игнорируются.
Переходы и метки.
В командных файлах можно использовать команды условного перехода,
меняющие логику их работы в зависимости от возникновения определенных условий.
В качестве примера создадим командный
файл, целью которого будет присвоение заранее определенной буквы для
съемных носителей.
Исходные данные: имеется 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, следующего содержания:
В качестве метки используется строка символов, начинающаяся
с двоеточия. Сделаем изменения в нашем командном файле, чтобы не возникало
сообщений об ошибке:
При выполнении измененного таким образом командного файла, сообщение об
ошибке при выполнении SUBST исчезнет.
Конечно, данный пример очень примитивен, но главная его цель заключается не в написание оптимального командного сценария, а в демонстрации принципов использования меток и переходов. Во всех последующих примерах, насколько это возможно, используется именно такой подход – важна не оптимальность исходного текста, а его максимальная простота для понимания.
Одним из важнейших приемов при написании сложных командных файлов
является анализ успешности выполнения конкретной команды или программы. Признаки ошибок при выполнении команд можно отслеживать, анализируя
специальную переменную ,
значение которой формируется при завершении работы большинства программ.
Обычно ERRORLEVEL равно нулю, если программа завершилась без ошибок и
единице – при возникновении ошибки. Могут быть и другие значения, если они
предусмотрены в выполняемой программе.
В качестве команды в строке командного файла можно использовать также
командный файл. Причем, для передачи с возвратом обратно к точке выполнения
вызывающего командного файла используется
команда CALL. Попробуйте создать командный файл test.bat, следующего содержания:
– приостановить выполнение командного файла до
нажатия любой клавиши.
Если же в файле test.bat убрать CALL, оставив “1.bat”, то , выполнится командный файл 1.bat, и возврат в test.bat выполняться не будет.
Вызываемый командный файл может создавать переменные и присваивать им
определенные значения, которые будут доступны для обработки в вызывающем
файле. Попробуйте изменить файл test.bat следующим образом:
Переменные вызываемого файла будут доступны в вызывающем файле.
Кстати, используя передачу управления командному файлу, можно организовать
его зацикливание. Попробуйте добавить в конец файла test.bat строку:
Выйти из зацикливания командного файла можно по нажатию комбинации
CTRL+Break.
Команда CALL может использоваться не только для вызова другого командного файла, но и для вызова внутренней подпрограммы. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:
Примеры командных файлов.
Использование утилит командной строки и командных файлов нередко позволяют
решить многие проблемы связанные с повседневной эксплуатацией компьютерной
техники. Большинство системных администраторов и грамотных пользователей
продолжают ими пользоваться, несмотря на то, что в Windows проявилось новое,
более мощное и современное средство управления системой – WMI
(Windows Management Instrumentation) и многофункциональная оболочка пользователя Power Shell. Очевидно, не в последнюю очередь, это
обусловлено простотой реализации и достаточной
эффективностью командной строки для решения повседневных задач обслуживания системы.
Ниже приведены простые
примеры с комментариями, которые демонстрируют некоторые возможности и
способы применения .cmd и .bat