Question: I am looking for some examples of a .bat OR .wsh script that can do the following:

* Recursively read file names in a directory with a user-provided extension (.dll, .exe, etc)
* Search a user-provided directory for the above file names
* Generate a txt or xls report of the findings, like: x.txt was found in "C:\temp", "C:\blah"

TIA.

EDIT:

Oops, I should clarify: there are two directories and two searches here.

Search 1:

* Search a user provided directory "Dir 1" for all \*.dll's.

Search 2:

* Search a different user provided directory "Dir 2" for the file names generated in Search 1. This search also needs to be recursive.

So, if Search 1 finds foo.dll, foo2.dll and foo3.dll in Dir 1, Search 2 should look in Dir 2 for foo.dll, foo2.dll and foo3.dll, and provide a report (simple listing) of each found file.

Answer: 
Put the following in a .bat file, say `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` is the user provided file mask.

`%2` is the user provided directory to search first.

`%3` is the user provided directory to search second.

Call from the command line to generate a report:

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

```

The `<nul (set /p)` trick will output text to the console without a new line (courtesy [Pax](https://stackoverflow.com/users/14860/pax) from this thread: [How to code a spinner for waiting processes in a Batch file?](https://stackoverflow.com/questions/368041/how-to-code-a-spinner-for-waiting-processes-in-a-batch-file#371276))

The `2>&1` added when calling the batch file is needed to capture all the output to the file (courtesy [aphoria](https://stackoverflow.com/users/2441/aphoria) from this thread: [Underused features of Windows batch files](https://stackoverflow.com/questions/245395/underused-features-of-windows-batch-files#246691))
I would study Robocopy to see if this could help (the /L flag is a clue).