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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Сетевые технологии (http://forum.oszone.net/forumdisplay.php?f=31)
-   -   как загнать в переменную ip арес компа ? (http://forum.oszone.net/showthread.php?t=66824)

mitiya 05-06-2006 16:49 446850

как загнать в переменную ip арес компа ?
 
мне нужна переменная с ip компа на катором запущен bat файл для подстановки его в команды .

hasherfrog 05-06-2006 17:17 446880

А если их два? :]
См. в сторону ipconfig, наверное
+for /F
+find


о, нашёл :]
Код:

FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "IP Address"') DO FOR %%B IN (%%A) DO SET IPADDRESS=%%B
? не могу проверить сейчас ;]

mitiya 05-06-2006 18:00 446930

поидея переменная должна появиться в списке переменных (покрайней мере на период сесси),но не появляется.

Честно говаря я не очень понимаю принцип и синтаксис присвоения переменных. Буду очень благодарен если поесните.

hasherfrog 05-06-2006 18:06 446938

Появится, если её проэкспортировать. В *nix это setenv (export). В windows сделали утилиту-аналог. Сейчас...... О вот,
http://oszone.net/display.php?id=3673

Но зачем? Вы выполняете приведённую выше строчку внутри Вашего батника (того, "которому нужно IP") - и всё, у Вас в течении его работы будет переменная IPADDRESS с ипишником.

mitiya 05-06-2006 19:03 446977

вот батни (тестовый)

Код:

FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "IP Address"') DO FOR %%B IN (%%A) DO SET myip=%%B 
set 
pause

вот результат его работы

Код:

 
E:\!my_backUP>FOR /F "TOKENS=2* DELIMS=:" %A IN ('IPCONFIG | FIND "IP Address"')  DO FOR %B IN (%A) DO SET myip=%B   
E:\!my_backUP>set
  ALLUSERSPROFILE=C:\Documents and Settings\All Users 
APPDATA=C:\Documents and Settings\Администратор\Application Data 
CLIENTNAME=Console 
COMMANDER_PATH=E:\totalcmd 
CommonProgramFiles=C:\Program Files\Common Files 
COMPUTERNAME=PREDATOR
 ComSpec=C:\WINDOWS\system32\cmd.exe 
HOMEDRIVE=C: 
HOMEPATH=\Documents and Settings\Администратор 
LOGONSERVER=\\PREDATOR 
NUMBER_OF_PROCESSORS=1 
OS=Windows_NT
 Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Co  mmon Files\Autodesk Shared\;C:\Program Files\backburner 2\ 
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 
PROCESSOR_ARCHITECTURE=x86 
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD 
PROCESSOR_LEVEL=6 
PROCESSOR_REVISION=0801 
ProgramFiles=C:\Program Files 
PROMPT=$P$G 
SESSIONNAME=Console 
SystemDrive=C: 
SystemRoot=C:\WINDOWS  T
EMP=C:\WINDOWS\TEMP 
TMP=C:\WINDOWS\TEMP 
USERDOMAIN=PREDATOR 
USERNAME=Администратор 
USERPROFILE=C:\Documents and Settings\Администратор 
windir=C:\WINDOWS   
E:\!my_backUP>pause 
Для продолжения нажмите любую клавишу . . .


дак вот в списке переменных должна бы появиться переменная myip (на время работы батника),а ее нет

да и может всеж поясните каким образом происходит присвоение переменной.

и еще вопросик как в батнике открыть файл в определенном приложении ? к примеру

start **.txt

чтоб он открылся не в блокноте ,а том в чем я укажу ?

hasherfrog 05-06-2006 19:43 446995

Код:

@echo off
FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "IP"') DO FOR %%B IN (%%A) DO SET IPADDRESS=%%B
echo %IPADDRESS%

>> чтоб он открылся не в блокноте
1) зарегистрируйте свою "программу на открытие *.txt"
или 2) запускайте не start **.txt, а чегототам **.txt


P.S. Кстати, у меня выдаёт неверный IP (у меня их два). Как я и говорил.

mitiya 05-06-2006 20:56 447014

да у меня тоже выдает тот каторый присваевается мне при поключении к инету по модему,а мне нужет тот каторый на сетевухе (в любом случае)


hasherfrog 05-06-2006 23:08 447075

mitiya
8-)
чего делать будем?

mitiya 05-06-2006 23:16 447077

надо как-то получить ip от "Подключение по локальной сети"

обьясни мне смысл всех этих надписей в коде . Какой механизм ? как он там воще ip ищет ?

и может лучше поискать в netsh ?

hasherfrog 06-06-2006 11:37 447272

А что если так?
Код:

@echo off
for /f "TOKENS=2* DELIMS= " %%a in ('ping %COMPUTERNAME% -n 1 -r 1 ^| find "." ^| find /v "TTL" ^| find /v "Ping" ^| find /v "["') do set IPADDRESS=%%a
echo %IPADDRESS%

>> надо как-то получить ip от "Подключение по локальной сети"
Мы вроде как это и делаем

>> обьясни мне смысл всех этих надписей в коде . Какой механизм ? как он там воще ip ищет ?
Нет, вот всё-таки давайте Вы сами разберитесь, ладно?

>> и может лучше поискать в netsh ?
Я не знаю, что это такое.

mitiya 06-06-2006 16:50 447450

работает.

netsh - это что-то вроде консольного итерфейса через который можно назначать ip ,dns, щлюз и бог знает что еще

Код:

netsh interface ip set address name="Подключение по локальной сети" static 172.18.0.53 255.255.255.0
этот код назначаеть ip и маску.

hasherfrog 07-06-2006 00:05 447712

mitiya
Да, спасибо за инфу, много интересного нашёл, совершенно неожиданно. Век живи - век учись.

Vadikan 07-06-2006 00:38 447719

Изменение переменных среды и добавление собственных переменных
Остается только определить ее батником, это вроде уже сделал hasherfrog.

mitiya 07-06-2006 04:08 447740

Vadikan

я знаю как назночать переменные в простом случае " set x=y "
а вот как происходит процес в этом случае ?

Код:

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
остается загаткой. Я им пользуюсь (всмысле заменяю win51 и CDROM на то что мне нужно),но не понимаю каким образом тут все происходит

%%i - что это ?

и тд

Vadikan 07-06-2006 05:57 447745

mitiya
Я же не просто так дал ссылку на статью, а чтобы не повторяться почему переменные, заданные командой set, действуют лишь в течении сессии пакетного файла. Прочтите тогда статью с самого начала, сразу все прояснится. Что же касается принципов работы данного кода, то это уже обсуждалось, причем в АУ :) http://forum.oszone.net/showthread.php?t=46182

mitiya 07-06-2006 11:15 447841

мне собственно достаточно и переменной только на время сессии батника.

Спасибо за ссылку теперь многое стало понятно.

Но что озночает %%i я так и не понял :stink:

и уж тем болие что написано в этой строке : "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "IP Address"')

TOKENS - ?
DELIMS - ?
^| - ?
и тд

:wacko:

hasherfrog 07-06-2006 14:14 447954

Откройте cmd
Скажите help for
Всё написано

Ньюансы:
1) | - перенаправление выходного потока одной команды во входной другой. См. также про > < >>. Финт ^| используется для задания конвейера внутри (' ')
2) ' ' - способ вызова команды, когда её выходной поток должен быть использован в качестве файла (всё того же входного потока) для другой команды. Используется в батниках.

Совсем подробную информацию ищите в инете. Всё описано очень подробно. Осталось добавить, что в виндоуз немного более скудный рацион команд по перенаправлению потоков (сейчас ещё ничего, раньше было совсем тухло) по сравнению с *nix.

mitiya 07-06-2006 14:47 447975

Честно говаря нефига не понял.
А хелп я читал тоже не очень понял дальше приметивных случаев.

Мне бы на пальцах , на пимерах с поеснением :)

hasherfrog 07-06-2006 14:51 447979

Не, mitiya, честно, в одну тему это не влезет.

mitiya 08-06-2006 02:27 448222

:sorry:


Время: 04:55.

Время: 04:55.
© OSzone.net 2001-