использовать %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 локального компьютера? Если 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-адрес . . . . . . . . . . . .???
|
Код:
@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" - тоже работает.
|
Цитата:
и можно, кстати без "-4" - тоже работает
|
- и слава богу, но, например, в Windows 7 вид IP будет иным. -4 отвечает за принудительное использование протокола IPv4. В Win xp этот ключ не мешает. Ping.exe наверное понадобился, потому что с этим именем Ping существуют и другие исполнимые файлы, которые система обнаруживает ранее, например, ping.bat. Раз такое дело, я бы вообще посоветовал указать полное имя.
|
Smith_Wesson |
26-05-2011 17:06 1683145 |
to megaloman, - спасибо! Всё работает отлично!
|
Код:
@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.
© OSzone.net 2001-