我有我的代码有问题netstat命令..批处理 - 在IF语句
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命令..批处理 - 在IF语句
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批处理没有那么有用或灵活。
的方法上面使用从“查找”返回代码,以确定是否要运行telnet。那我搞砸了一段
的一件事是ERRORLEVEL <number>
作品像ERRORLEVEL GE <number>
不ERRORLEVEL EQ <number>
,所以ERRORLEVEL 0
始终是真实的。
你可以使用'if%errorlevel%== 1'来实现相等。 NT cmd也支持其他比较运算符 –
,即使在Linux中,建议使用'$?'代替像这样检查变量值,除非您需要稍后使用该变量 –
您正在将Windows shell与一个有用的Linux shell混淆。 – LinuxDisciple
是的,显然我是一个Linux用户:D这就是为什么我需要帮助。 Windows Shell总是让我的逻辑混淆不清...... – 13loodH4t
'SET con = netstat -a -n |找到“127.0.0.1:3306”'设置一个名为''con con''的变量(后面的空格)为一个值''netstat -a -n |找到“127.0.0.1:3306”“(前面有空格)。它不执行该命令。你没有'%con%'但是'%con%',因此打印'%con%'会给你一个空字符串 –