批处理问题!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/25 23:00:00
正在看一个批处理编写的多线程扫描在线ip器,其中有个for循环的代码看了n久都弄不懂:for /f %%i in ('arp -a') do if not %%==interface: if not %%i==internet if not %%i==no(::正在读取在线主机的ip地址
start xxx.bat %%i)
往高手帮小弟解释解释上面的批处理代码,我感激不尽!!特别是后面三个if语句!!!

for /f %%i in ('arp -a')
事实上就是把arp -a的输出的每行内容付值于%%i啊.
你这样

@echo off
for /f %%i in ('arp -a') do echo %%i
pause

这样看看就明白啦

根据批处理的规定,语句与语句之间必须使用分隔符号或者&,()进行连接起来。
所以结尾的那条if语句应该是一条语句。
要说是什么意思,你前面的语句没给我们。就是internet,nterface,这几个文件的变量里的内容。
这if就是这样的意思,如果%%i内的文件不等于nterface这里面的内容就执行下条语句,所以你可以这样看。
if not %%i==(interface: if not %%i==internet if not %%i==no(::正在读取在线主机的ip地址 )
因为我们知道,if语句如果执行成功了或者失败了,在没有换行的情况下,后面是可以跟着一条语句的。
if %%==%% command他只是连用罢了。

对"arp -a"结果的每一行第一个空格以前的字符(付值给%%i)
(
如果"%%i"不是"interface:"
如果"%%i"也不是"internet"
如果"%%i"也不是"no"
那么以"%%i"为命令行参数启动"xxx.bat"
)

你可以for /?和if /f和arp /?查看帮助

这个批处理有一个问题,它"interface:"和"internet"的首字母没有大写.应当大写或者"if not /i ...".
其实正确的办法是,"for /f %%i in..."改成"for /f &quo