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
始终为真。
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
始终为真。