嵌套for循环,搜索文件

时间:2013-11-06 17:16:19

标签: windows search batch-file for-loop

我有两个文件:

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

我需要的是循环访问filetest.txt,然后搜索中标识的文件 filetest2.txt用于文件名并将结果输出到文件。我试图识别超过100个bat文件,其中每个大约100个SSIS包正在运行。

我在Windows批处理中这样做,尝试了大约20种不同的方法但没有成功 - 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

以下命令搜索filetest.txt中包含的每个文件中filetest2.txt中包含的字符串:

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

编辑已添加示例

我首先使用setforcmd e if命令的帮助文本创建了四个文本文件,然后我执行了以下示例(我的语言)操作系统是西班牙语):

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

输出包括找到搜索模式的每个文件的名称;如果添加了if / N开关,则输出还包括找到搜索模式的每一行的编号。

答案 1 :(得分:0)

@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

这应生成包含所需数据的文件newfile.txt

如果filetest.txt中的实际数据包含有助于成为文件名的字符串,则

@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

可能是首选。