PDA

Показать полную графическую версию : как загнать в переменную ip арес компа ?


mitiya
05-06-2006, 16:49
мне нужна переменная с ip компа на катором запущен bat файл для подстановки его в команды .

hasherfrog
05-06-2006, 17:17
А если их два? :]
См. в сторону ipconfig, наверное
+for /F
+find
[hr]
о, нашёл :]
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
поидея переменная должна появиться в списке переменных (покрайней мере на период сесси),но не появляется.

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

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

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

mitiya
05-06-2006, 19:03
вот батни (тестовый)


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
@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
да у меня тоже выдает тот каторый присваевается мне при поключении к инету по модему,а мне нужет тот каторый на сетевухе (в любом случае)

hasherfrog
05-06-2006, 23:08
mitiya
8-)
чего делать будем?

mitiya
05-06-2006, 23:16
надо как-то получить ip от "Подключение по локальной сети"

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

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

hasherfrog
06-06-2006, 11:37
А что если так?
@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
работает.

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

Vadikan
07-06-2006, 00:38
Изменение переменных среды и добавление собственных переменных (http://oszone.net/display.php?id=3673#create)
Остается только определить ее батником, это вроде уже сделал hasherfrog.

mitiya
07-06-2006, 04:08
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
mitiya
Я же не просто так дал ссылку на статью, а чтобы не повторяться почему переменные, заданные командой set, действуют лишь в течении сессии пакетного файла. Прочтите тогда статью с самого начала, сразу все прояснится. Что же касается принципов работы данного кода, то это уже обсуждалось, причем в АУ :) http://forum.oszone.net/showthread.php?t=46182

mitiya
07-06-2006, 11:15
мне собственно достаточно и переменной только на время сессии батника.

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

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

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

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

:wacko:

hasherfrog
07-06-2006, 14:14
Откройте cmd
Скажите help for
Всё написано

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

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

mitiya
07-06-2006, 14:47
Честно говаря нефига не понял.
А хелп я читал тоже не очень понял дальше приметивных случаев.

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

hasherfrog
07-06-2006, 14:51
Не, mitiya, честно, в одну тему это не влезет.

mitiya
08-06-2006, 02:27
:sorry:




© OSzone.net 2001-2012