BATCH - IF 语句中的 netstat 命令

BATCH - netstat command in IF statement

SET con = netstat -a -n | find "127.0.0.1:3306"
if "%con%" == "" (
    telnet 127.0.0.1 3306
)
pause

这将始终执行 telnet。

实际上,当我手动查找 netstat -a -n | find "127.0.0.1:3306" 时,它不等于 "",但 %con% 总是设置为 "",为什么?

我做错了什么?

您可以试试这样的方法。

netstat -a -n |find "127.0.0.1:3306" >nul
if ERRORLEVEL 1 (
telnet 127.0.0.1 3306
)

您的方法看起来像一个通用的 Linux shell 解决方案,但 Windows 批处理远没有那么有用或灵活。

上述方法使用 'find' 中的 return 代码来确定是否要 运行 telnet。

一件事让我一时糊涂是 ERRORLEVEL <number> 的工作方式类似于 ERRORLEVEL GE <number> 而不是 ERRORLEVEL EQ <number>,所以 ERRORLEVEL 0 始终为真。