Скрипт .bat или .wsh, который может искать файлы - PullRequest
7 голосов
/ 06 января 2009

Я ищу несколько примеров сценария .bat OR .wsh, который может выполнять следующие действия:

  • Рекурсивное чтение имен файлов в каталоге с предоставленным пользователем расширением (.dll, .exe и т. Д.)
  • Поиск в указанном пользователем каталоге указанных выше имен файлов
  • Создание отчета о результатах в формате txt или xls, например: x.txt был найден в "C: \ temp", "C: \ blah"

ТИА.

EDIT:

Упс, я должен уточнить: здесь два каталога и два поиска.

Поиск 1:

  • Поиск в каталоге пользователя "Dir 1" всех * .dll.

Поиск 2:

  • Поиск в другом каталоге, указанном пользователем "Dir 2", по именам файлов, созданным в поиске 1. Этот поиск также должен быть рекурсивным.

Итак, если Поиск 1 находит foo.dll, foo2.dll и foo3.dll в Dir 1, Поиск 2 должен искать в Dir 2 файлы foo.dll, foo2.dll и foo3.dll и предоставлять отчет (просто список) каждого найденного файла.

Ответы [ 3 ]

18 голосов
/ 06 января 2009

Почему бы не использовать dir?

Поиск в текущем каталоге и всех подкаталогах для dll

dir /S *.dll

Поиск всех C для DLLS

dir /S C:\*.dll

Сохранить отчет

dir /S C:\*.dll > report.txt
9 голосов
/ 06 января 2009

Поместите в файл .bat следующее, скажем FindAll.bat:

@echo OFF

for /f %%F in ('dir %2\%1 /s /b') do (
    <nul (set /p msg=%%~nxF )
    for /f %%G in ('dir %3\%%~nxF /s /b') do (
        if exist %%G (
            @echo found at %%G
        ) 
    )
)

%1 - предоставленная пользователем маска файла.

%2 - это пользовательский каталог для поиска первым.

%3 - это пользовательский каталог для поиска второй.

Вызов из командной строки для генерации отчета:

FindAll *.dll d:\dir1 d:\dir2 > dll_report.txt 2>&1

Трюк <nul (set /p) выведет текст на консоль без новой строки (любезно Pax из этого потока: Как кодировать счетчик для процессов ожидания в пакетном файле? )

2>&1, добавляемое при вызове пакетного файла, необходимо для захвата всего вывода в файл (любезно aphoria из этого потока: Недостаточно используемые функции пакетных файлов Windows )

0 голосов
/ 06 января 2009

Я бы изучил Robocopy, чтобы посмотреть, может ли это помочь (флаг / L является подсказкой).

...