В продолжение предыдущей статьи, мы рассмотрим поиск файлов через командную строку с помощью утилиты Dir. Утилита dir как правило используется для вывода списка файлов и каталогов в заданной папке, но так как с помощью параметров можно указать фильтр для выводимой информации, то утилита командной строки подходит и для поиска файлов или каталогов. Но, прежде, немного лирики…
Как то я наблюдал такую ситуацию: женщина заходила в социальную сеть Однокласники, потом вставляла в CR-ROM диск, на котором были ее фотки с любимым котом Мурзиком. Естественно, автоматически выскакивало диалоговое окно, в котором была вкладка, вроде, точно не помню, “Копировать изображения”, женщина благополучно на нее нажимала и ждала, что все фотографии автоматически появятся на ее станице в Однокласниках. Это меня конечно улыбнуло, стоит заметить настойчивость данной дамы, так как она повторяла процесс по несколько раз и в итоге неудач, пожаловалась на качество интернет услуг. В добавок, она умудрилась установить в системе сразу две антивирусные программы (NOD и Касперский), в итоге, Windows висел не по детски.
Утилиту dir можно использовать на ровне с утилитами . В данной статье будет рассмотрен скрипт поиска файла в командной строке Windows. Прежде чем приступать к написанию примера, давайте рассмотрим, с какими ключами работает утилита DІR:
DIR [диск: ] [путь] [имя_файла] атрибуты] ] порядок]] дата]]
[диск: ] [путь] – тут нужно указать имя диска и каталога, содержимое которых надо показать
[имя_файла] – говорит о том, что надо включить в список имена, которые надо показать, как вы уже догадались, тут можно использовать и подстановочные знаки: * или?. Для примера, на диске D я создал папку TEST, в которую поместил несколько документов различного типа:
Стоит помнить, что для параметра [имя_файла] нельзя задать через запятую собственную цепочку. Теперь для разминки, осуществим поиск файла через командную строку с расширением pdf. Для этого пропишем:
Dir d:\test*.pdf
После выполнения заданной команды, мы увидим только те документы, которые имеют расширение pdf.
Хорошо, продолжим рассмотрение ключей:
атрибуты] ] – использование данного ключа позволяет отфильтровать вывод списка по атрибутам, которые могут принимать следующие значения, их можно использовать совместно:
D – собственно, только папки
H – включает вывод только скрытых документов
S – включает вывод только системных документов
R – атрибут файла “только чтение”
A – атрибут файла “архивный”
- – данный префикс имеет значение НЕ
Если ключ /А отсутствует, то произойдет вывод всех файлов и папок, кроме тех, которые являются скрытыми и системными, если же данный параметр прописан без атрибутов, то произойдет вывод всех документов, включая скрытые и системные.
DIR C:\ /A:HS – вывод только тех, которые имеют атрибуты «скрытый» и «системный».
DIR С:\ /А:-Н – вывод всех, кроме скрытых.
DIR С:\ /A:D – выводим список всех каталогов
/В – перечисляет только названия каталогов и имена файлов (в длинном формате) по одному на строчку, включая расширение. При этом выводится только основная информация, без итоговой.
/S –просмотреть информацию не только из текущего каталога, но и из его подпапок
Ну, теперь для написания скрипта, который осуществит поиск файлов в командной строке, информации достаточно. Цель такова, написать батник (searchfiles.cmd ) которому будут передаваться два аргумента: путь к диску или каталогу и шаблон, по которому будет происходить поиск файла через командную строку Windows. И так, смотрим на пример:
@If "%1"=="" (Set pathf=D:\test) else (Set pathf=%1)
@If "%2"=="" (Set exmf=*.pdf) else (Set exmf=%2)
Dir %pathf%%exmf% /s
В первой строчке мы проверяем наличие первого аргумента, если он пуст, то, переменная pathf будет содержать путь по умолчанию D:\test. Во второй – происходит проверка на второй аргумент и аналогично, при его отсутствии, переменная exmf получает значение по умолчанию *.pdf. В последней строчке будет происходить поиск файлов в командной строке по заданному шаблону.
Не стоит забывать, что сервер сценариев для работы с каталогами использует , который значительно превосходит по возможностям утилиту командная строка dir.
Вывод списка файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. Для файлов dir выводит также расширение имени и размер в байтах. Команда dir также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.
dir [диск : ][путь ][имя_файла ] [...] [/p ] [/q ] [/w ] [/d ] [/a [[: ]атрибуты ]] [/o [[: ]порядок_сортировки ]] [/t [[: ]поле_сортировки ]] [/s ] [/b ] [/l ] [/n ] [/x ] [/c ] [/4 ]
Значение | Описание |
---|---|
n | Сортировка по именам в алфавитном порядке |
e | Сортировка по расширениям в алфавитном порядке |
d | Сортировка по дате и времени от ранних к поздним |
s | Сортировка по размеру от меньших к большим |
g | Сортировка с группированием каталогов перед файлами |
-n | Сортировка по именам в обратном алфавитном порядке (от Z к A) |
-e | Сортировка по расширению в обратном алфавитном порядке (от.ZZZ к.AAA) |
-d | Сортировка по дате и времени от поздних к ранним |
-s | Сортировка по размеру от больших к меньшим |
-g | Сортировка с группировкой каталогов после файлов |
Допускается использование нескольких имен_файлов . Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла .
Для вывода списка подгруппы файлов и подкаталогов можно использовать подстановочные знаки (? и *).
Если параметр /a используется более чем с одним значением параметра атрибуты , команда dir выведет имена только тех файлов, все атрибуты которых совпадают с заданными. Например, при использовании параметра /a со значениями атрибутов r и -h в формате /a:r-h или /ar-h команда dir выведет имена файлов, являющихся одновременно скрытыми и защищенными от записи.
Если указано несколько значений порядка_сортировки , команда dir сортирует имена файлов сначала по первому условию, затем — по второму и т. д. Например, если указан ключ /o со значениями e и -s порядка_сортировки в формате /o:e-s или /oe-s , команда dir отсортирует имена каталогов и файлов по расширениям, затем от больших файлов к меньшим и выведет окончательный результат. В результате сортировки по алфавиту файлы без расширений будут идти вначале, затем имена каталогов, а потом имена файлов с расширениями.
Чтобы перенаправить вывод команды dir в файл с помощью символа (>) или использовать канал (|) для передачи вывода в другую команду, необходимо использовать параметры команды dir /a:-d и /b для вывода только списка имен файлов. Параметр имя_файла с параметрами /b и /s можно использовать, чтобы указать поиск командой dir в текущем каталоге и его подкаталогах всех файлов, соответствующих значению имя_файла . При этом команда dir выведет только имя диска, имя каталога, имя файла и расширение по одному файлу в строке. Чтобы использовать перенаправление с помощью каналов, в файле Autoexec.nt должна быть установлена переменная среды TEMP.
Параметры команды dir могут быть предварительно заданы включением команды set для переменной среды DIRCMD в файл Autoexec.nt. В команде set dircmd может быть использована любая допустимая комбинация параметров команды dir , включая расположение и имя файла.
Например, чтобы использовать переменную среды DIRCMD для задания вывода в расширенном формате (/w ) по умолчанию, в файле Autoexec.nt необходимо ввести следующую строку:
set dircmd=/w
При однократном использовании команды dir можно отменить параметр с помощью переменной среды DIRCMD. Для этого введите параметр, который требуется отменить, в командной строке dir , указав перед ним знак минус. Например:
Чтобы изменить параметры DIRCMD, используемые по умолчанию, введите следующую команду:
set= новый_параметр
Новые параметры по умолчанию останутся в силе для всех последующих команд dir , пока команда set dircmd не задаст новые параметры или не будет перезагружен компьютер.
Чтобы удалить все параметры по умолчанию, введите следующую команду:
set dircmd=
Чтобы просмотреть текущие параметры переменной среды DIRCMD, введите следующую команду:
Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите следующую команду:
dir /s/w/o/p
Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затемвыводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.
Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду:
dir /s/w/o/p/a:-d
Чтобы напечатать список каталогов, введите следующую команду:
ir > prn
Если указать параметр prn , список каталогов отправляется на принтер, подключенный к порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn именем этого порта.
Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду:
dir > \records\dir.doc
Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога Records. Если этот каталог не существует, выводится следующее сообщение:
Ошибка создания файла
Чтобы вывести список всех файлов с расширением.txt во всех каталогах диска C, введите следующую команду:
dir c:\*.txt /w/o/s/p
Команда dir выводит на экран алфавитный список файлов, удовлетворяющих заданному шаблону, в несколько колонок с паузой после заполнения каждого экрана.
DIR - команда вывода списка файлов
Команда DIR выводит список файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. А для для просмотра дерева каталогов используется команда TREE .
Для файлов dir выводит также расширение имени и размер в байтах. Команда dir также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.
dir [диск:][путь][имя_файла] [...] атрибуты]]порядок_сортировки]] поле_сортировки]] , где
Вывод списка файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. Для файлов dir выводит также расширение имени и размер в байтах. Команда dir также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.
dir [диск : ][путь ][имя_файла ] [...] [ /p ] [/q ] [/w ] [/d ] [/a [[ : ]атрибуты ]] [/o [[: ]порядок_сортировки ]] [/t [[ : ]поле_сортировки ]] [/s ] [/b ] [/l ] [ /n ] [/x ] [/c ] [/4 ]
Значение | Описание |
---|---|
n | Сортировка по именам в алфавитном порядке |
e | Сортировка по расширениям в алфавитном порядке |
d | Сортировка по дате и времени от ранних к поздним |
s | Сортировка по размеру от меньших к большим |
g | Сортировка с группированием каталогов перед файлами |
-n | Сортировка по именам в обратном алфавитном порядке (от Z к A) |
-e | Сортировка по расширению в обратном алфавитном порядке (от.ZZZ к.AAA) |
-d | Сортировка по дате и времени от поздних к ранним |
-s | Сортировка по размеру от больших к меньшим |
-g | Сортировка с группировкой каталогов после файлов |
Допускается использование нескольких имен_файлов . Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла .
Для вывода списка подгруппы файлов и подкаталогов можно использовать подстановочные знаки (? и *).
Если параметр /a используется более чем с одним значением параметра атрибуты , команда dir выведет имена только тех файлов, все атрибуты которых совпадают с заданными. Например, при использовании параметра /a со значениями атрибутов r и -h в формате /a:r-h или /ar-h команда dir выведет имена файлов, являющихся одновременно скрытыми и защищенными от записи.
Если указано несколько значений порядка_сортировки , команда dir сортирует имена файлов сначала по первому условию, затем по второму и т. д. Например, если указан ключ /o со значениями e и -s порядка_сортировки в формате /o:e-s или /oe-s , команда dir отсортирует имена каталогов и файлов по расширениям, затем от больших файлов к меньшим и выведет окончательный результат. В результате сортировки по алфавиту файлы без расширений будут идти вначале, затем имена каталогов, а потом имена файлов с расширениями.
Чтобы перенаправить вывод команды dir в файл с помощью символа (>) или использовать канал (|) для передачи вывода в другую команду, необходимо использовать параметры команды dir /a:-d и /b для вывода только списка имен файлов. Параметр имя_файла с параметрами /b и /s можно использовать, чтобы указать поиск командой dir в текущем каталоге и его подкаталогах всех файлов, соответствующих значению имя_файла . При этом команда dir выведет только имя диска, имя каталога, имя файла и расширение по одному файлу в строке. Чтобы использовать перенаправление с помощью каналов, в файле Autoexec.nt должна быть установлена переменная среды TEMP.
Параметры команды dir могут быть предварительно заданы включением команды set для переменной среды DIRCMD в файл Autoexec.nt. В команде set dircmd может быть использована любая допустимая комбинация параметров команды dir , включая расположение и имя файла.
Например, чтобы использовать переменную среды DIRCMD для задания вывода в расширенном формате (/w ) по умолчанию, в файле Autoexec.nt необходимо ввести следующую строку:
При однократном использовании команды dir можно отменить параметр с помощью переменной среды DIRCMD. Для этого введите параметр, который требуется отменить, в командной строке dir , указав перед ним знак минус. Например:
Чтобы изменить параметры DIRCMD, используемые по умолчанию, введите следующую команду:
set= новый_параметр
Новые параметры по умолчанию останутся в силе для всех последующих команд dir , пока команда set dircmd не задаст новые параметры или не будет перезагружен компьютер.
Чтобы удалить все параметры по умолчанию, введите следующую команду:
Чтобы просмотреть текущие параметры переменной среды DIRCMD, введите следующую команду:
Команда set выведет список переменных среды и их параметров. Дополнительные сведения о этой команде смотрите .
Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите следующую команду:
Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.
Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду:
dir /s/w/o/p/a:-d
Чтобы напечатать список каталогов, введите следующую команду:
Если указать параметр prn , список каталогов отправляется на принтер, подключенный к порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn именем этого порта.
Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду:
dir > \records\dir.doc
Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога Records. Если этот каталог не существует, выводится следующее сообщение:
Ошибка создания файла
Чтобы вывести список всех файлов с расширением.txt во всех каталогах диска C, введите следующую команду:
dir c:\*.txt /w/o/s/p
Команда dir выводит на экран алфавитный список файлов, удовлетворяющих заданному шаблону, в несколько колонок с паузой после заполнения каждого экрана.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Команда DIR позволяет отобразить список файлов и подкаталогов для указанного каталога. Список может быть отсортирован по множеству критериев, задаваемых параметрами командной строки.Формат командной строки:
DIR [диск:][путь][имя_файла] атрибуты]] порядок]] /T[[:]время]]
Параметры командной строки:
[диск:][путь][имя_файла] - Диск, каталог и/или файлы, которые следует включить в список. /A Вывод файлов с указанными атрибутами. D Каталоги R Доступные только для чтения H Скрытые файлы A Файлы для архивирования S Системные файлы Префикс "-" имеет значение НЕ -S - НЕ системные файлы. /B Вывод только имен файлов. /C Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C. /D Вывод списка в несколько столбцов с сортировкой по столбцам. /L Использование нижнего регистра для имен файлов. /N Отображение имен файлов в крайнем правом столбце. /O Сортировка списка отображаемых файлов. Порядок: N По имени (алфавитная) S По размеру (сперва меньшие) E По расширению (алфавитная) D По дате (сперва более старые) G Начать список с каталогов Префикс "-" имеет значение НЕ /P Пауза после заполнения каждого экрана. /Q Вывод сведений о владельце файла. /R Отображение альтернативных потоков файлов. /S Вывод списка файлов из указанного каталога и его подкаталогов. /T Выбор поля времени для отображения и сортировки время: C Создание (время создания - Create) A Последнее использование (последний доступ - Accsess) W Последнее изменение (последняя модификация Write) /W Вывод списка в несколько столбцов. /X Отображение коротких имен для файлов, чьи имена не соответствуют стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие имена файлов выводятся слева от длинных. Если короткого имени у файла нет, вместо него выводятся пробелы. /4 Вывод номера года в четырехзначном формате Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом "-", например: /-W.
Примеры использования:
DIR /? - отобразить справку по использованию команды.
DIR - отобразить список файлов и подкаталогов текущего каталога.
DIR /P - отобразить список файлов и подкаталогов текущего каталога в режиме постраничного вывода на экран. При выполнении команды DIR с данным ключом, после заполнения экрана, вывод информации приостанавливается до нажатия какой-либо клавиши. Аналогично выполнению команды DIR в цепочке с командой MORE - DIR | MORE
DIR > C:\listdir.txt - отобразить список файлов и подкаталогов текущего каталога с выводом результатов в текстовый файл.
DIR C:\WINDOWS\*.dll dll из каталога C:\WINDOWS
DIR C:\WINDOWS\SYSTEM32\X*.* - отобразить список файлов из каталога C:\WINDOWS\SYSTEM32, имена которых начинаются с символа X
DIR C:\WINDOWS\SYSTEM32\*Y.EXE - отобразить список файлов с расширением .exe из каталога C:\WINDOWS\SYSTEM32, имена которых заканчиваются символом Y
DIR C:\WINDOWS\system32\???t.* - отобразить список файлов, имя которых содержит 3 любых символа (???) и символ t
DIR C:\WINDOWS\SYSTEM32\*.* /A:H - отобразить список скрытых файлов и подкаталогов из каталога C:\WINDOWS\SYSTEM32
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 не задан:
Том в устройстве C имеет метку C Серийный номер тома: 1884-ABEC Содержимое папки c:\ 16.01.2013 11:22 Config.Msi 26.04.2012 09:05 Fix-It 25.07.2011 11:31 RECYCLER 03.08.2011 16:06 System Volume Information 24.04.2008 17:36 VCOM 0 файлов 0 байт 5 папок 103 593 283 584 байт свободно
Для сортировки имен отображаемых файлов и каталогов используется параметр /O
/O:N - сортировать по имени в алфавитном порядке(Name) С использованием знака " - " - сортировать в обратном порядке.
/O:S - сортировать по размеру в возрастающем порядке(Size). Со знаком " - " - сортировать в порядке убывания размеров файлов.
/O:E - сортировать по расширению имени файла (Extension) /O:-E - в обратном порядке
/O:D - сортировать по дате и времени модификации файла или каталога.
/O:-D - в обратном порядке (от новых к старым)
/O:G - сначала отображать список каталогов, затем - файлов.
Использование параметра /T позволяет отсортировать списки файлов и каталогов в соответствии с отметками времени (Time Stamp), хранящимися в файловой системе Windows для каждого из них:
/T:C - сортировать по времени создания (Creation)
/T:A - сортировать по времени доступа (Access)
/T:W - сортировать по времени модификации , последней операции записи (Written). Этот параметр используется по умолчанию.
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-го символа:
28.01.2013 16:48 DOCUMENT 28.01.2013 16:41 DOCUME~2 DOCUMENTS 15.07.2011 12:00 DOCUME~1 Documents and Settings В примере отображается список из 3-х каталогов:
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 задан параметр, определенный в переменной DIRCMD, то его значение более приоритетно, и будет использоваться в процессе выполнения данной команды.
Для расширения возможностей команды DIR можно воспользоваться объединением ее в цепочку с командой поиска текстовой информации FIND
DIR C:\*.* /s | FIND "28.01.2013" - отобразить список всех файлов и каталогов диска C: имеющих отметку времени "28 января 2013 г."
Для обработки отдельных полей из строк вывода результатов команды 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
Альтернативные потоки файлов используются для хранения данных, не связанных с содержимым основного потока (собственно содержимого файла) и на практике применяются для привязки дополнительной информации к этому содержимому. Так, например, многие антивирусы хранят в альтернативных потоках контрольные суммы проверенных на заражение файлов, а система безопасности использует их для определения факта скачивания файлов по сети. Подробнее об альтернативных потоках - в статье