user2961510
user2961510

Reputation: 1

Nested for-loop, searching files

I have two files:

filetest.txt
============
SSISPACKAGE1.dtsx 
SSISPACKAGE2.dtsx 
SSISPACKAGE3.dtsx 
SSISPACKAGE4.dtsx 
SSISPACKAGE5.dtsx 
SSISPACKAGE6.dtsx 
SSISPACKAGE7.dtsx 
SSISPACKAGE8.dtsx 

filetest2.txt
=============
\\central_test_server\SSIS_Packages\Daily.bat
\\central_test_server\SSIS_Packages\Weekly.bat
\\central_test_server\SSIS_Packages\Monthly.bat
\\central_test_server\SSIS_Packages\Quarterly.bat
\\central_test_server\SSIS_Packages\SemiAnnually.bat
\\central_test_server\SSIS_Packages\Annually.bat

What I need is to cycle through filetest.txt, then search the files identified in filetest2.txt for the filename and output to a file the results. I am trying to identify in well over 100 bat files where each of about 100 SSIS Packages are running.

I'm doing this in Windows batch, have tried about 20 various approaches without success - any help would be greatly appreciated.

Upvotes: 0

Views: 124

Answers (2)

Magoo
Magoo

Reputation: 80211

@ECHO OFF
SETLOCAL
(
 FOR /f "delims=" %%a IN (filetest.txt) DO (
  ECHO ===================== looking FOR %%a =====================
  FOR /f "delims=" %%s IN (filetest2.txt) DO (
   FINDSTR /m /i /l /c:"%%a" "%%s"
  ) 
 )
)>newfile.txt
GOTO :EOF

This should produce a file newfile.txt containing the required data.

If the real data in filetest.txt contains strings that are conducive to being a filename, then

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (filetest.txt) DO (
 FOR /f "delims=" %%s IN (filetest2.txt) DO (
  FINDSTR /m /i /l /c:"%%a" "%%s"
 ) 
)>"%%a.new"
GOTO :EOF

may be preferred.

Upvotes: 0

Aacini
Aacini

Reputation: 67326

The following command search the strings contained in filetest.txt in each one of the files contained in filetest2.txt:

findstr /G:filetest.txt /F:filetest2.txt

EDIT: Example added

I first created four text files with the help text for set, for, cmd e if commands, then I executed the example below (the language of my OS is Spanish):

C:> type wordList.txt
retardada
entorno

C:> type fileList.txt
set.txt
for.txt
cmd.txt
if.txt

C:> findstr /G:wordlist.txt /F:filelist.txt
set.txt:Muestra, establece o quita las variables de entorno de cmd.exe.
set.txt:  variable  Especifica el nombre de la variable de entorno.
set.txt:Escriba SET sin parámetros para ver las variables de entorno actuales.
set.txt:de la variable en el entorno actual.
set.txt:que no sea numérica, se tratará como variable de entorno cuyo valor se
set.txt:que no está definida en el entorno actual, se usará el valor cero. Esto
set.txt:permite hacer operaciones aritméticas con los valores de variables de en
torno
set.txt:de asignación requiere un nombre de variable de entorno a la izquierda d
el
set.txt:La sustitución de variables de entorno ha sido mejorada así:
set.txt:expandirá la variable de entorno PATH, sustituyendo cada repetición de
set.txt:expandirá la variable de entorno PATH, y usará solo los 5 caracteres
set.txt:de entorno agregado al desplazamiento o longitud especificados.
set.txt:retardada. Esta compatibilidad está siempre deshabilitada de forma
set.txt:La expansión de la variable de entorno es útil para tratar con las
set.txt:La expansión de la variable de entorno retardada permite usar un
set.txt:tiempo de ejecución.  Si la expansión de la variable retardada está
set.txt:dinámicas de entorno que se pueden expandir pero que no se
for.txt:    enumerará los nombres de variable de entorno en el entorno actual.
for.txt:                   de entorno de PATH y expande %I al nombre totalmente
for.txt:                   de la variable de entorno no es definido o no se
for.txt:                   entorno de PATH para %I y se expande a la letra de
cmd.txt:/V:ON   Habilita la extensión de variables de entorno retardada con !
cmd.txt:/V:OFF  Deshabilita la extensión de variables de entorno retardada.
cmd.txt:La expansión de variables de entorno retardada NO está habilitada de for
ma
cmd.txt:entorno retardada para una invocación particular de CMD.EXE con los
cmd.txt:retardada para todas las invocaciones de CMD.EXE en una sesión de inicio
 de
cmd.txt:Si la expansión de variables de entorno retardada está habilitada, se pu
ede
cmd.txt:entorno en tiempo de ejecución.
if.txt:nombre de variable de entorno y vuelve como verdadero si se define la
if.txt:variable de entorno.
if.txt:de ERRORLEVEL, siempre y cuando no exista ya una variable de entorno con
el
if.txt:variable de entorno con el nombre CMDCMDLINE, en cuyo caso obtendrá su va
lor.
if.txt:actual CMDEXTVERSION, siempre y cuando no exista ya una variable de entor
no

The output include the name of each file the search pattern was found in; if /N switch is added, the output also include the number of each line where the search pattern was found in.

Upvotes: 1

Related Questions