Показать полную графическую версию : как загнать в переменную ip арес компа ?
мне нужна переменная с 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
? не могу проверить сейчас ;]
поидея переменная должна появиться в списке переменных (покрайней мере на период сесси),но не появляется.
Честно говаря я не очень понимаю принцип и синтаксис присвоения переменных. Буду очень благодарен если поесните.
hasherfrog
05-06-2006, 18:06
Появится, если её проэкспортировать. В *nix это setenv (export). В windows сделали утилиту-аналог. Сейчас...... О вот,
http://oszone.net/display.php?id=3673
Но зачем? Вы выполняете приведённую выше строчку внутри Вашего батника (того, "которому нужно IP") - и всё, у Вас в течении его работы будет переменная IPADDRESS с ипишником.
вот батни (тестовый)
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 (у меня их два). Как я и говорил.
да у меня тоже выдает тот каторый присваевается мне при поключении к инету по модему,а мне нужет тот каторый на сетевухе (в любом случае)
hasherfrog
05-06-2006, 23:08
mitiya
8-)
чего делать будем?
надо как-то получить 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 ?
Я не знаю, что это такое.
работает.
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
Да, спасибо за инфу, много интересного нашёл, совершенно неожиданно. Век живи - век учись.
Изменение переменных среды и добавление собственных переменных (http://oszone.net/display.php?id=3673#create)
Остается только определить ее батником, это вроде уже сделал hasherfrog.
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 - что это ?
и тд
mitiya
Я же не просто так дал ссылку на статью, а чтобы не повторяться почему переменные, заданные командой set, действуют лишь в течении сессии пакетного файла. Прочтите тогда статью с самого начала, сразу все прояснится. Что же касается принципов работы данного кода, то это уже обсуждалось, причем в АУ :) http://forum.oszone.net/showthread.php?t=46182
мне собственно достаточно и переменной только на время сессии батника.
Спасибо за ссылку теперь многое стало понятно.
Но что озночает %%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.
Честно говаря нефига не понял.
А хелп я читал тоже не очень понял дальше приметивных случаев.
Мне бы на пальцах , на пимерах с поеснением :)
hasherfrog
07-06-2006, 14:51
Не, mitiya, честно, в одну тему это не влезет.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC