Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] использовать %ip адрес% вместо %computername% (http://forum.oszone.net/showthread.php?t=207480)

Pinguine 24-05-2011 17:24 1681836

использовать %ip адрес% вместо %computername%
 
Помогите разобраться
В настоящее время для запуска bat-файлов используется переменная %computername%.
В автозагрузке компьютера прописана команда на запуск \\linux\disk\%computername%\1.bat
В \\linux\disk\ созданы соответственно папки с именами компьютеров. В результате каждый компьютер получает свой bat-файл. Возникла острая необходимость сменить данную переменную на ip адрес. Т.е. чтобы bat-файлы запускались в зависимости от ip адреса компьютера.
Возможно ли такое?

Petya V4sechkin 24-05-2011 17:40 1681843

Pinguine, воспользуйтесь фильтрами по названию темы по ip



Результат

Pinguine 24-05-2011 19:07 1681891

Первым делом воспользовался фильтром. К сожалению ответа на свой вопрос не нашел. Так же просматривая темы не получил даже намека на то как решить мой вопрос.

Morpheus 24-05-2011 20:30 1681934

Pinguine, [решено] Как определить IP и записать его в переменную? (OS: Windows Vista)

Foreigner 24-05-2011 21:51 1681975

Pinguine,
На сколько я понял вам нужно определить системную или пользовательскую переменную со значением ip локального компьютера? Если ip-адреса в вашей сети не меняются то можно жестко определить данную переменную в каждом компьютере. Т.е. прописать в реестре. Иначе прописывать в автозагрузку батник, который определяет ip и запускает батник из нужной папки. Например так:
Код:

@echo off
setlocal

:: Можно так

::      for /f "tokens=*" %%i in (' ipconfig ') do (
::
::          for %%j in ( %%i ) do set "ip=%%j"
::
::      )

:: Но, имхо, лучше так:
 
for /f "tokens=*" %%i in (' netsh interface ip show ipaddress ') do (

    for %%j in ( %%i ) do set "ip=%%j"

)

\\linux\disk\%ip%\1.bat


Smith_Wesson 25-05-2011 13:05 1682293

to Foreigner,

Код:

for /f "tokens=*" %%i in (' ipconfig ') do (
::
::          for %%j in ( %%i ) do set "ip=%%j"
::
::      )

ваш батник вытягивает только последнюю строку (ipconfig) т.е. адрес шлюза. А как вытянуть непосредственно IP-адрес . . . . . . . . . . . .???

megaloman 25-05-2011 13:50 1682316

Код:

@Echo Off
FOR /F "usebackq tokens=2 delims=[]" %%i IN (`ping %Computername% -n 1 -4`) DO if not "%%i"=="" Set ip=%%i
Echo %ip%


Smith_Wesson 25-05-2011 17:56 1682434

Цитата:

Цитата megaloman
"usebackq tokens=2 delims=[]" »

не пойму, к чему это?

Smith_Wesson 26-05-2011 11:39 1682893

Понял в чём дело - у меня, почему-то заработало только в таком виде:

Код:

(`ping.exe %Computername% -n 1`)
т.е. нужно было прописывать как ping.exe - и можно, кстати без "-4" - тоже работает.

megaloman 26-05-2011 14:10 1683023

Цитата:

и можно, кстати без "-4" - тоже работает
- и слава богу, но, например, в Windows 7 вид IP будет иным. -4 отвечает за принудительное использование протокола IPv4. В Win xp этот ключ не мешает. Ping.exe наверное понадобился, потому что с этим именем Ping существуют и другие исполнимые файлы, которые система обнаруживает ранее, например, ping.bat. Раз такое дело, я бы вообще посоветовал указать полное имя.

Smith_Wesson 26-05-2011 17:06 1683145

to megaloman, - спасибо! Всё работает отлично!

ordnung 10-10-2015 22:36 2562574

Код:

@for /f "tokens=2" %%i in ('netsh interface ip show ipaddress 18') do @(set ip_adress=%%i & goto kokoko)
:kokoko
@set ip_adress=%ip_adress: =%
@echo.%ip_adress%


работает на win 7 x64
18 - номер интерфейса IP-адрес которого нужно узнать, можно посмотреть командой netsh interface ip show ipaddress


Время: 19:28.

Время: 19:28.
© OSzone.net 2001-