批处理文件没有正确退出循环?

时间:2009-05-10 16:10:26

标签: batch-file

我正在处理批处理文件以收集我的两个子网客户端的mac地址但是由于某种原因我的批处理文件没有正确结束第一个循环,所以第二个循环没有被执行,因此其余的脚本没有被执行。关于为什么会发生这种情况的任何想法?

for /L %%i in (1,1,254) do ping.bat 192.168.232 %%i
for /L %%i in (1,1,254) do ping.bat 192.168.233 %%i
REM Some other stuff goes on here but the second loop never gets executed

提前多多感谢

编辑: ping.bat只包含这个:

nbtstat -A %1.%2

通过NetBIOS获取MAC地址

2 个答案:

答案 0 :(得分:2)

启动批处理文件将中止“母”批处理文件。虽然她似乎完成了当前的路线;你的第一个FOR循环实际执行了254次。

添加CALL语句可解决此问题:

for /L %%i in (1,1,254) do call ping.bat 192.168.232 %%i
for /L %%i in (1,1,254) do call ping.bat 192.168.233 %%i
echo Test complete!

在引入CALL语句之前,通过在命令解释器的新实例中运行子批处理文件来解决这个问题:

for /L %%i in (1,1,254) do COMMAND /C ping.bat 192.168.232 %%i

答案 1 :(得分:0)

很可能它正在等待来自另一端的响应。你没有尝试减少时间吗?我建议你添加一个虚拟计数器来检查它是否在等待响应或挂起......: - )