0

我有两个文件:

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 种不同的方法但没有成功 - 任何帮助将不胜感激。

4

2 回答 2

1

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

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

编辑添加示例

set我首先使用, for, cmde命令的帮助文本创建了四个文本文件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

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

于 2013-11-06T19:27:59.113 回答
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

可能是首选。

于 2013-11-07T14:05:59.390 回答