我现在有点困境。您看到我正在尝试创建一个批处理应用程序,它将检测文本文件中已保存连接的未知连接。不知何故,我需要应用程序将netstat结果与文本文件中的一个进行比较。这就是我的尝试:
if %netstat -b 5% equ c:\list.txt goto :win
else goto :fail
现在我确实试图找到解决方案,但无济于事。也许我做错了什么?还是有另一种方法吗?我希望netstat命令将结果与文本文件中记录的内容进行比较。请帮我!
答案 0 :(得分:1)
以下命令将执行您所需要的操作。
for /f "tokens=3" %%f in ('netstat -b 5') do (
findstr /c:"%%f" c:\list.txt && (
echo Allowed %%f
) || (
echo Disallowed %%f
)
)
这将迭代netstat -b 5
的每一行输出。 (注意这是非常慢的,所以对于测试我将输出重定向到netstat.output然后只是加载文件)。
说明
For /F
- 迭代括号中命令/文件的每一行。tokens=3
- 获取第3个令牌(远程地址)%%f
- 变量名称'netstat -b 5'
或netstat.output
- 要迭代的行的来源do
- 要运行的命令然后我们启动findstr
并告诉它在文件%%f
中查找字符串c:\list.txt
。如果成功,&&
命令将运行此地址。否则,如果找不到该字符串,则||
命令将运行