sirven significado script que por para lotes los ejemplos crear copiar como codigo batch bat archivos archivo abrir batch-file scripting wsh

batch file - significado - Un script.bat o.wsh que puede buscar archivos



crear script cmd (3)

Estoy buscando algunos ejemplos de un script .bat OR .wsh que pueda hacer lo siguiente:

  • Lectura recursiva de nombres de archivos en un directorio con una extensión proporcionada por el usuario (.dll, .exe, etc.)
  • Buscar un directorio proporcionado por el usuario para los nombres de archivo anteriores
  • Genere un informe txt o xls de los hallazgos, como: x.txt se encontró en "C: / temp", "C: / blah"

TIA.

EDITAR:

Vaya, debería aclarar: hay dos directorios y dos búsquedas aquí.

Búsqueda 1:

  • Busque un directorio proporcionado por el usuario "Dir 1" para todos * .dll.

Búsqueda 2:

  • Busque un directorio proporcionado por el usuario diferente "Dir 2" para los nombres de archivo generados en la Búsqueda 1. Esta búsqueda también debe ser recursiva.

Por lo tanto, si Search 1 encuentra foo.dll, foo2.dll y foo3.dll en Dir 1, Search 2 debe buscar en Dir 2 para foo.dll, foo2.dll y foo3.dll, y proporcionar un informe (listado simple) de cada archivo encontrado.


¿Por qué no usar dir?

Buscar el directorio actual y todos los subdirectores para dlls

dir /S *.dll

Buscar todo de C por dlls

dir /S C:/*.dll

Guarde un informe

dir /S C:/*.dll > report.txt


Yo estudiaría Robocopy para ver si esto podría ayudar (la bandera / L es una pista).


Coloque lo siguiente en un archivo .bat, diga 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 es la máscara de archivo proporcionada por el usuario.

%2 es el directorio proporcionado por el usuario para buscar primero.

%3 es el directorio proporcionado por el usuario para buscar el segundo.

Llamar desde la línea de comando para generar un informe:

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

El truco <nul (set /p) enviará texto a la consola sin una nueva línea (cortesía de Pax de este hilo: ¿Cómo codificar un spinner para procesos en espera en un archivo Batch? )

Los 2>&1 agregados al llamar al archivo por lotes son necesarios para capturar todos los resultados del archivo ( aporía de cortesía de este hilo: Características infrautilizadas de los archivos por lotes de Windows )