FOR / F问题从文本文件运行

时间:2011-02-20 00:39:26

标签: batch-file

我似乎遇到了下面代码的问题:

@echo off
FOR /F "tokens=1" %%a IN (logs\reachable.txt) do echo %%a && set ip=%%a && call :process


:process

FOR /F "usebackq tokens=2 delims=[]" %%i in (`ping -n 1 %ip%`) do set myip=%%i && set ip=
echo %myip%


call :end

:end
exit /b

代码工作正常,但是reachable.txt(ping)中的最后一个显示两次。

HOME
192.168.1.108
HIVE
192.168.1.100
HIVE-FS
192.168.1.110
Illusion-PC
::1
Ken-PC
192.168.1.20
192.168.1.20

有人知道如何解决这个问题吗?

提前致谢。

此致 错觉

1 个答案:

答案 0 :(得分:1)

这是因为,一旦你的第一个for循环完成,它就会进入下面的代码。

替换:

@echo off
FOR /F "tokens=1" %%a IN (logs\reachable.txt) do echo %%a && set ip=%%a && call :process

:process
rem will be called from 'for' above AND when 'for' is done

有类似的东西:

@echo off
FOR /F "tokens=1" %%a IN (logs\reachable.txt) do echo %%a && set ip=%%a && call :process
goto :eof

:process
rem will be called from 'for' above but NOT after 'for' is done

这样就不会掉线。