Проблема FOR / F, запущенная из текстового файла - PullRequest
2 голосов
/ 20 февраля 2011

У меня возникла проблема с кодом ниже:

@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 Ответ

1 голос
/ 20 февраля 2011

Это потому, что, как только ваш первый цикл 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

чтобы не провалилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...