在批处理文件中使用 netcat 为什么即使重定向时输出仍保留在控制台中?
Using netcat in a batch file why the output remains in the console even when redirected?
我有一个批处理文件和下面的代码摘录。
该代码用于测试特定主机上的端口。
下面显示的代码有一个故意错误 (wwww.google.com),我试图将其重定向到一个文件以供以后处理。即使我将所有输出重定向到文件,以下内容仍显示在控制台中:
"wwww.google.com: forward host lookup failed: h_errno 11001: HOST_NOT_FOUND"
我想在文件中捕获此错误,而不是将其显示到控制台...不确定为什么重定向不起作用?
@echo off
set tempFile=%temp%\temp
call :CheckPort "wwww.google.com" "80"
GOTO :EOF
:CheckPort
nc -z %~1 %~2^>%tempFile% 2^>^&1
EXIT /B 0
字符的转义会破坏管道。而是做:
nc -z %~1 %~2 > %tempFile% 2>&1
这会将 STDERR
重定向到 STDOUT
并将 STDOUT
重定向到文件,这意味着两者都将转到文件。
我有一个批处理文件和下面的代码摘录。 该代码用于测试特定主机上的端口。
下面显示的代码有一个故意错误 (wwww.google.com),我试图将其重定向到一个文件以供以后处理。即使我将所有输出重定向到文件,以下内容仍显示在控制台中:
"wwww.google.com: forward host lookup failed: h_errno 11001: HOST_NOT_FOUND"
我想在文件中捕获此错误,而不是将其显示到控制台...不确定为什么重定向不起作用?
@echo off
set tempFile=%temp%\temp
call :CheckPort "wwww.google.com" "80"
GOTO :EOF
:CheckPort
nc -z %~1 %~2^>%tempFile% 2^>^&1
EXIT /B 0
字符的转义会破坏管道。而是做:
nc -z %~1 %~2 > %tempFile% 2>&1
这会将 STDERR
重定向到 STDOUT
并将 STDOUT
重定向到文件,这意味着两者都将转到文件。