我有两个文件:
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种不同的方法但没有成功 - 任何帮助将不胜感激。
答案 0 :(得分:1)
以下命令搜索filetest.txt
中包含的每个文件中filetest2.txt
中包含的字符串:
findstr /G:filetest.txt /F:filetest2.txt
编辑:已添加示例
我首先使用set
,for
,cmd
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
可能是首选。