как да присвоите празна стойност на променлива чрез цикъл в пакетен скрипт

както можете да видите по-долу, аз се опитвам да присвоя първата и последната стойност "empty non IP" на променлива, използвайки for /f цикъл.

по някаква причина цикълът не анализира празните IP стойности и избира само средната

C:\Windows\System32>ipconfig | find "Default"
   Default Gateway . . . . . . . . . :
   Default Gateway . . . . . . . . . : 192.168.188.2
   Default Gateway . . . . . . . . . :

това е моят код...благодаря много!!

@echo off
SETLOCAL EnableDelayedExpansion
set /a count=0
    ipconfig | find "Default Gateway" > %temp%\TEMPIP.txt
    for /f "tokens=12 delims=: " %%a in (%temp%\TEMPIP.txt) do (


    set /a count+=1
    echo %%a > %temp%\TEMP.txt
    set gw=%%a
    set gwvar!count!=!gw!

 )

    echo now...
    echo.
    echo var1 is... %gwvar1%
    echo var2 is... %gwvar2%

    pause

person rosho    schedule 06.04.2015    source източник


Отговори (2)


Default Gateway . . . . . . . . . : 192.168.188.2
^       ^       ^ ^ ^ ^ ^ ^ ^ ^ ^   ^
1       2       3 4 5 6 7 8 9 0 11  12

Вашият код изисква токен номер 12. Единственият ред, който има 12 токена, е този с ip адрес, така че кодът в клаузата do не се изпълнява за другите два реда, тъй като няма токен за обработка.

Можеш да използваш

set "count=0"
for /f "tokens=11,* delims=: " %%a in ('
    ipconfig ^| find "Default"
') do (
    set /a "count+=1"
    set "gwvar!count!=%%b"
)

set gwvar

%%b (* остатъка след 11-ия токен) се използва, тъй като %%a ще съдържа последната точка (11-ия токен)

person MC ND    schedule 06.04.2015
comment
работи като чар! така че за всички ... това е работещото решение - person rosho; 08.04.2015

Интересно наблюдение - но не съвсем точно.

set count=

ще зададе ERRORLEVEL на 1 IF var недефиниран, но ще остави ERRORLEVEL непроменен, ако var е дефиниран, докато set count=something else ще остави ERRORLEVEL непроменен независимо (емпирично определено)

ако е дефиниран брой, задайте брой =

ще изглежда да спре проблема, който изглежда срещате.

person user2782717    schedule 06.04.2015