[英]findstr command not working in windows batch file
我在Windows中制作了一个简单的批处理文件。 它可以进行报告以查找包含错误的URL。 但所有URL仅回显成功。
wget命令标准输出似乎为空。 重定向管道不起作用。 怎么了??
@echo off
for /f "delims=" %%i in (TEST.txt) do call :request %%i
set /p in=Finish!
:request
echo | set /p= %1 >> result.txt
wget.exe -T 3 --tries=2 %1 | findstr /I "error"
if %errorlevel% == 0 (
echo error >> result.txt
) else (
echo success >> result.txt
)
我的问题解决了。 一个好的答案的修改后的代码
@echo off
set logFile="log.txt"
set resultFile="result.txt"
for /f "delims=" %%i in (TEST.txt) do call :request %%i
set /p in=Finish!
:request
echo|set /p= %1 >> %resultFile%
wget.exe -P download -T 3 --tries=2 %1 2>&1 | tee -a %logFile% | findstr /I "error" > nul
if %errorlevel% == 0 (
echo error >> result.txt
) else (
echo success >> result.txt
)
您尝试读取的wget诊断信息将写入stderr,而不是stdout。 因此,您只需要在管道之前将stderr重定向到stdout即可。
假设所有wget参数都是正确的,我将编写如下代码:
@echo off
>result.txt (for /f "delims=" %%i in (TEST.txt) do (
wget.exe -T 3 --tries=2 %%I 2>&1|findstr /i error >nul&&echo %%i ERROR||echo %%i SUCCESS
))
echo Finished!
我想,您只想echo
result.txt
而不是终端/控制台。
if %errorlevel% == 0 (
echo error >> result.txt > /dev/null 2>&1
) else (
echo success >> result.txt > /dev/null 2>&1
)
这些更改不允许显示在控制台/终端上
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.