Batch file 查找string1和string2的bat文件
我正在尝试做以下工作:搜索Temp中以“Micro”开头的所有txt文件,并查找其中是否存在以下两个字符串。我需要在一个文件中找到这两个字符串 目前我有:Batch file 查找string1和string2的bat文件,batch-file,findstr,Batch File,Findstr,我正在尝试做以下工作:搜索Temp中以“Micro”开头的所有txt文件,并查找其中是否存在以下两个字符串。我需要在一个文件中找到这两个字符串 目前我有:在这里输入code @echo off cd C:\Users\ADMINI~1\AppData\Local\Temp findstr /N /C:"action: Uninstall" /C:"Exit code: 0x0, restarting: No" Micro*.log >results.txt if %errorlevel%=
在这里输入code
@echo off
cd C:\Users\ADMINI~1\AppData\Local\Temp
findstr /N /C:"action: Uninstall" /C:"Exit code: 0x0, restarting: No" Micro*.log >results.txt
if %errorlevel%==1 (
robocopy C:\Users\ADMINI~1\AppData\Local\Temp C:\Users\Administrator\Desktop results.txt
) else (
echo matches found
)
但这是使用OR。我发现我需要为和使用。*,但以下简单方法不起作用:
findstr /N /C:"action: Uninstall".*/C:"Exit code: 0x0, restarting: No" Micro*.log
不知道我做错了什么/
干杯,
格里
获取包含第一个字符串的文件列表,并使用此列表搜索第二个字符串
获取包含第一个字符串的文件列表,并使用此列表搜索第二个字符串
获取包含第一个字符串的文件列表,并使用此列表搜索第二个字符串
获取包含第一个字符串的文件列表,并使用此列表搜索第二个字符串。对不起,不是所有的txt,而是所有的.log文件。对不起,不是所有的txt,而是所有的.log文件。对不起,不是所有的txt,而是所有的.log文件。对不起,不是所有的txt,而是所有的.log文件。这样行吗?第一个findstr不会只是将它找到的管线输送到第二个findstr。这意味着第二个findstr永远不会匹配,因为它只查看第一个findstr的结果。不确定为什么。。。但它不起作用。我应该在第二个字符串的末尾再次声明Micro*.log吗?我得到了以下信息:>findstr/N/C:“操作:卸载”Micro*.lo g | findstr/C:“退出代码:0x0,重新启动:No”1>results.txt C:\Users\ADMINI~1\AppData\Local\Temp>if 1==1(roboccopy C:\Users\ADMINI~1\AppDa ta\Local\Temp C:\Users\Administrator\Desktop results.txt)否则(echo matches f found)我基本上需要在一个文件中找到这两个字符串。如果我找不到他们中的任何一个,我会处理的。但我的通行证是“我两者都找到了”。如果一个或两个不匹配,我将有一个失败。我需要寻找准确的字符串…:/您可以对每个单独的
findstr
进行一些测试:测试第一个并检查结果,然后将该结果重定向到一个文件,并使用该文件测试第二个findstr
,这样行吗?第一个findstr不会只是将它找到的管线输送到第二个findstr。这意味着第二个findstr永远不会匹配,因为它只查看第一个findstr的结果。不确定为什么。。。但它不起作用。我应该在第二个字符串的末尾再次声明Micro*.log吗?我得到了以下信息:>findstr/N/C:“操作:卸载”Micro*.lo g | findstr/C:“退出代码:0x0,重新启动:No”1>results.txt C:\Users\ADMINI~1\AppData\Local\Temp>if 1==1(roboccopy C:\Users\ADMINI~1\AppDa ta\Local\Temp C:\Users\Administrator\Desktop results.txt)否则(echo matches f found)我基本上需要在一个文件中找到这两个字符串。如果我找不到他们中的任何一个,我会处理的。但我的通行证是“我两者都找到了”。如果一个或两个不匹配,我将有一个失败。我需要寻找准确的字符串…:/您可以对每个单独的findstr
进行一些测试:测试第一个并检查结果,然后将该结果重定向到一个文件,并使用该文件测试第二个findstr
,这样行吗?第一个findstr不会只是将它找到的管线输送到第二个findstr。这意味着第二个findstr永远不会匹配,因为它只查看第一个findstr的结果。不确定为什么。。。但它不起作用。我应该在第二个字符串的末尾再次声明Micro*.log吗?我得到了以下信息:>findstr/N/C:“操作:卸载”Micro*.lo g | findstr/C:“退出代码:0x0,重新启动:No”1>results.txt C:\Users\ADMINI~1\AppData\Local\Temp>if 1==1(roboccopy C:\Users\ADMINI~1\AppDa ta\Local\Temp C:\Users\Administrator\Desktop results.txt)否则(echo matches f found)我基本上需要在一个文件中找到这两个字符串。如果我找不到他们中的任何一个,我会处理的。但我的通行证是“我两者都找到了”。如果一个或两个不匹配,我将有一个失败。我需要寻找准确的字符串…:/您可以对每个单独的findstr
进行一些测试:测试第一个并检查结果,然后将该结果重定向到一个文件,并使用该文件测试第二个findstr
,这样行吗?第一个findstr不会只是将它找到的管线输送到第二个findstr。这意味着第二个findstr永远不会匹配,因为它只查看第一个findstr的结果。不确定为什么。。。但它不起作用。我应该在第二个字符串的末尾再次声明Micro*.log吗?我得到了以下信息:>findstr/N/C:“操作:卸载”Micro*.lo g | findstr/C:“退出代码:0x0,重新启动:No”1>results.txt C:\Users\ADMINI~1\AppData\Local\Temp>if 1==1(roboccopy C:\Users\ADMINI~1\AppDa ta\Local\Temp C:\Users\Administrator\Desktop results.txt)否则(echo matches f found)我基本上需要在一个文件中找到这两个字符串。如果我找不到他们中的任何一个,我会处理的。但我的通行证是“我两者都找到了”。如果一个或两个不匹配,我将有一个失败。我需要寻找准确的字符串…:/您可以对每个单独的findstr
进行一些测试:测试第一个并检查结果,然后将结果重定向到一个文件,并使用该文件测试第二个findstr
。。。
for /F "delims=" %%a in ('findstr /M /C:"action: Uninstall" Micro*.log') do (
findstr /N /C:"Exit code: 0x0, restarting: No" "%%a"
)
set "string1=action: Uninstall"
set "string2=Exit code: 0x0, restarting: No"
set "files=C:\Users\ADMINI~1\AppData\Local\Temp\Micro*.log"
findstr /m /c:"%string1%" "%files%" | findstr /f:/ /m /c:"%string2%"