我正在向自定义协议的TCP服务器发送文本命令。在下面的示例中,我发送了2个命令并接收到了回写的响应。在telnet和netcat中按预期工作:
$ nc 192.168.1.186 9760
command1
command2
theresponse
批量处理时无法工作:
@echo off
cd..
cd C:\nc
nc 192.168.1.186 9760
00LI002LE99
end
请帮忙解决这个问题。
我正在向自定义协议的TCP服务器发送文本命令。在下面的示例中,我发送了2个命令并接收到了回写的响应。在telnet和netcat中按预期工作:
$ nc 192.168.1.186 9760
command1
command2
theresponse
批量处理时无法工作:
@echo off
cd..
cd C:\nc
nc 192.168.1.186 9760
00LI002LE99
end
请帮忙解决这个问题。
nc
交互式地时,它会从标准输入(终端)获取输入,因此您可以与其交互并发送命令。nc
的标准输入流中 - 只是将这些命令放在以下行中不会做到这一点;它会尝试作为完全独立的批处理命令运行这些命令。nc
中:nc 192.168.1.186 9760 < commands.txt
nc 192.168.1.186 9760 <<END
command1
command2
END
但我没有找到Windows批处理脚本的等价物。这有点丑陋,但是您可以将命令回显到临时文件,然后将其重定向到 nc
:
echo command1^
command2 > commands.txt
nc 192.168.1.186 9760 < commands.txt
^
转义字符可以让你在脚本中插入一个字面上的换行符。另外一种将换行符插入 echo 命令的方式(来自这个问题):echo command1 & echo.command2 > commands.txt
nc
(但我无法立即尝试使用nc
进行操作)。echo command1 & echo.command2 | nc 192.168.1.186 9760
sort
命令而不是nc
,因为我在Windows上没有安装nc
),但无论如何我会编辑答案... - DNA
nc 192.168.1.186 9760 < "commands.txt"
。 - indiv