Команда WHERE — поиск файлов по шаблону имени.
Команда WHERE используется для определения расположения файлов в каталогах операционных систем Windows 7 и старше, имена которых соответствуют задаваемому шаблону поиска, а также, при необходимости — размера, даты и времени их изменения. По умолчанию поиск выполняется в текущем каталоге и в каталогах, определяемых значением переменной среды PATH .
Формат командной строки:
WHERE [/R каталог] [/Q] [/F] [/T] шаблон.
Параметры командной строки:
/R — Рекурсивный поиск и отображение файлов, соответствующих указанному шаблону, начиная с указанного каталога.
/Q — Возврат только кода выхода без отображения списка найденных файлов (тихий режим)
/F — Отображение имен найденных файлов в кавычках.
/T — Отображение размера, даты и времени изменения для всех найденных файлов.
шаблон — Шаблон поиска для искомых файлов. В шаблоне можно использовать подстановочные знаки * и ?. Также можно задавать конструкции «$пер:шаблон» и «путь:шаблон», где «пер» представляет переменную среды, и поиск осуществляется по путям, указанным в переменной среды «пер». Эти конструкции не следует использовать с параметром /R. При поиске к шаблону также добавляются расширения из переменной PATHEXT. Пример: WHERE «c:\windows;c:\windows\system32:*.dll»
/? — Вывод справки по использованию.
WHERE.EXE возвращает код ошибки 0, если поиск был успешным, 1 — если безуспешным, и 2, если возникли ошибки.
Примеры использования команды WHERE.
WHERE /? — выдать краткую справку по использованию команды.
WHERE myfile.doc — найти расположение файла myfile.doc . Поиск выполняется в текущем каталоге и каталогах, имена которых задаются значением переменной PATH
WHERE /T myfile.doc — то же, что и в предыдущем случае, но в результатах поиска отображается размер, дата и время изменения файла.
WHERE /R C:\ myfile.doc — найти расположение файла myfile.doc . Поиск выполняется рекурсивно, начиная с корневого каталога диска C: ( поиск по всему диску C: )
WHERE /R %windir%\system32 *.log — поиск файлов с расширением log начиная с подкаталога system32 системного каталога Windows.
WHERE /R %windir%\system32 *.log > loglist.txt — поиск файлов с расширением log начиная с подкаталога system32 системного каталога Windows с записью результатов в текстовый файл loglist.txt текущего каталога.
WHERE /R C:\ . dir.* — поиск с использованием шаблона, где первые 3 символа имени файла могут быть любыми ( . , следующие 3 символа принимают значение dir и с любым расширением.
where /R C:\windows\system32 *7*.exe — поиск исполняемых файлов, в имени которых содержится символ «7» , начиная с каталога C:\windows\system32
WHERE /R c:\windows *.vbs *.cmd *.bat — поиск файлов сценариев ( скриптов ) — файлов с расширением vbs , cmd и bat начиная с каталога C:\windows
WHERE /Q file1.ext — не отображать результат поиска. При выполнении этой команды будет установлено значение переменной ERRORLEVEL в зависимости от результата поиска:
ERRORLEVEL=0 — файл file1.ext найден.
ERRORLEVEL=1 — файл file1.ext не найден.
ERRORLEVEL=2 — при поиске файла file1.ext возникла ошибка.
Обычно команда WHERE /Q используется в командных файлах, когда в зависимости от результата поиска заданного файла нужно выполнить ту или иную подпрограмму.
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
поиск find
Выполняет поиск строки текста в файле или файлах и отображает строки текста, содержащие указанную строку. Searches for a string of text in a file or files, and displays lines of text that contain the specified string.
Синтаксис Syntax
Параметры Parameters
Параметр Parameter | Описание Description |
---|---|
/v /v | Отображает все строки, не содержащие указанный объект . Displays all lines that don’t contain the specified . |
/C /c | Подсчитывает количество строк, содержащих указанный объект , и отображает итоговое значение. Counts the lines that contain the specified and displays the total. |
/n /n | Предшествует каждой строке с номером строки файла. Precedes each line with the file’s line number. |
/i /i | Указывает, что при поиске регистр не учитывается. Specifies that the search is not case-sensitive. |
[«/OFF» [строка]] [/off[line]] | Не пропускает файлы с установленным атрибутом «вне сети». Doesn’t skip files that have the offline attribute set. |
Обязательный элемент. Required. Задает группу символов (заключенных в кавычки), которые требуется найти. Specifies the group of characters (enclosed in quotation marks) that you want to search for. | |
[ :][ |
]
Комментарии Remarks
Если вы не используете /i, эта команда ищет именно то, что указано для String. If you don’t use /i, this command searches for exactly what you specify for string. Например, эта команда обрабатывает символы и по a — A разному. For example, this command treats the characters a and A differently. Однако при использовании параметра /i Поиск выполняется без учета регистра, а в a A качестве того же символа обрабатывается и. If you use /i, however, the search becomes non-case-sensitive, and it treats a and A as the same character.
Если строка, которую нужно найти, содержит кавычки, необходимо использовать двойные кавычки для каждой кавычки, содержащейся в строке (например, «» Эта строка содержит кавычки «»). If the string you want to search for contains quotation marks, you must use double quotation marks for each quotation mark contained within the string (for example, «»This string contains quotation marks»»).
Если опустить имя файла, эта команда выступает в качестве фильтра, принимая входные данные из стандартного источника входных данных (обычно это клавиатура, канал (|) или перенаправленный файл), а затем отображает все строки, содержащие строку. If you omit a file name, this command acts as a filter, taking input from the standard input source (usually the keyboard, a pipe (|), or a redirected file) and then displays any lines that contain string.
Параметры и параметры командной строки для команды Find можно вводить в любом порядке. You can type parameters and command-line options for the find command in any order.
Нельзя использовать подстановочные знаки (* и ?) в именах файлов или расширениях, указанных при использовании этой команды. You can’t use wildcards (* and ?) in file names or extensions that you specify while using this command. Для поиска строки в наборе файлов, указанных с помощью подстановочных знаков, эту команду можно использовать в команде for . To search for a string in a set of files that you specify with wildcards, you can use this command within a for command.
При использовании /c и /v в одной командной строке эта команда отображает количество строк, которые не содержат указанную строку. If you use /c and /v in the same command line, this command displays a count of the lines that don’t contain the specified string. При указании параметра /c и /n в той же командной строке команда Find игнорирует параметр /n. If you specify /c and /n in the same command line, find ignores /n.
Эта команда не распознает возвраты каретки. This command doesn’t recognize carriage returns. При использовании этой команды для поиска текста в файле, который содержит символы возврата каретки, необходимо ограничить строку поиска текстом, который может быть найден между возвратами каретки (то есть строкой, которая не может быть прервана символом возврата каретки). When you use this command to search for text in a file that includes carriage returns, you must limit the search string to text that can be found between carriage returns (that is, a string that is not likely to be interrupted by a carriage return). Например, эта команда не сообщает о совпадении для строкового налогового файла, если между словами налога и файла происходит возврат каретки. For example, this command doesn’t report a match for the string tax file if a carriage return occurs between the words tax and file.
Примеры Examples
Чтобы отобразить все строки из Pencil.AD , которые содержат строку резкость карандаша, введите: To display all lines from pencil.ad that contain the string pencil sharpener, type:
Чтобы найти текст, «специалисты, обозначенные в документе только для обсуждения. To find the text, «The scientists labeled their paper for discussion only. Это не окончательный отчет «. It is not a final report.» в файле report.doc введите: in the report.doc file, type:
Для поиска набора файлов можно использовать команду Find в команде for . To search for a set of files, you can use the find command within the for command. Чтобы найти в текущем каталоге файлы с расширением bat, которые содержат строку строки, введите следующую команду: To search the current directory for files that have the extension .bat and that contain the string PROMPT, type:
Чтобы найти и отобразить имена файлов на диске C, которые содержат строковый ЦП, выполните поиск на жестком диске с помощью вертикальной черты (|), чтобы направить выходные данные команды dir в команду Find следующим образом: To search your hard disk to find and display the file names on drive C that contain the string CPU, use the pipe (|) to direct the output of the dir command to the find command as follows:
Так как поиск при поиске выполняется с учетом регистра, а dir создает прописные буквы, необходимо либо ввести строковый процессор в верхнем регистре, либо использовать параметр командной строки /i с командой Find. Because find searches are case-sensitive and dir produces uppercase output, you must either type the string CPU in uppercase letters or use the /i command-line option with find.
Утилита dir — поиск файлов в командной строке
В продолжение предыдущей статьи, мы рассмотрим поиск файлов через командную строку с помощью утилиты Dir. Утилита dir как правило используется для вывода списка файлов и каталогов в заданной папке, но так как с помощью параметров можно указать фильтр для выводимой информации, то утилита командной строки подходит и для поиска файлов или каталогов. Но, прежде, немного лирики…
Как то я наблюдал такую ситуацию: женщина заходила в социальную сеть Однокласники, потом вставляла в CR-ROM диск, на котором были ее фотки с любимым котом Мурзиком. Естественно, автоматически выскакивало диалоговое окно, в котором была вкладка, вроде, точно не помню, “Копировать изображения”, женщина благополучно на нее нажимала и ждала, что все фотографии автоматически появятся на ее станице в Однокласниках. Это меня конечно улыбнуло, стоит заметить настойчивость данной дамы, так как она повторяла процесс по несколько раз и в итоге неудач, пожаловалась на качество интернет услуг. В добавок, она умудрилась установить в системе сразу две антивирусные программы (NOD и Касперский), в итоге, Windows висел не по детски.
Командная строка dir
Утилиту dir можно использовать на ровне с утилитами find и findstr. В данной статье будет рассмотрен скрипт поиска файла в командной строке Windows. Прежде чем приступать к написанию примера, давайте рассмотрим, с какими ключами работает утилита DІR:
DIR [диск: ] [путь] [имя_файла] [/А[ [ : ]атрибуты] ] [/B] [/C] [/D] [/L] [/N] [/ 0[[:] порядок]] [/P] [/Q] [/S] [/Т[[:]дата]] [/W] [/X] [/4]
[диск: ] [путь] – тут нужно указать имя диска и каталога, содержимое которых надо показать
[имя_файла] – говорит о том, что надо включить в список имена, которые надо показать, как вы уже догадались, тут можно использовать и подстановочные знаки: * или ?. Для примера, на диске D я создал папку TEST, в которую поместил несколько документов различного типа:
- generate.mf
- infosys.mf
- sysinfo.mf
- xa_032.рdf
- xa_033.рdf
- xa_034.рdf
- xa_035.рdf
- xa_036.рdf
- xa_037.pdf
- send_mail_data.vbs.txt
- send_mail_text.vbs.txt
- subdomen_scan.wsf.txt
Стоит помнить, что для параметра [имя_файла] нельзя задать через запятую собственную цепочку. Теперь для разминки, осуществим поиск файла через командную строку с расширением 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. В последней строчке будет происходить поиск файлов в командной строке по заданному шаблону.
Не стоит забывать, что сервер сценариев Windows Script Host для работы с каталогами использует объект Folder, который значительно превосходит по возможностям утилиту командная строка dir.
Спасибо за внимание. Автор блога Владимир Баталий