Как получить IP LAN к переменной в пакетном файле Windows

Я - потоковое аудио со своего ноутбука Windows 7 на звуковую карту, подключенную к маршрутизатору. У меня есть немного сценария пакетной обработки, чтобы начать передавать потоком.

REM Kill any instances of vlc 
taskkill /im vlc.exe
"c:\Program Files\VideoLAN\VLC\vlc.exe" <parameters to start http streaming>
REM Wait for vlc
TIMEOUT /T 10
REM start playback on router
plink -ssh me@192.168.1.1 -pw password killall -9 madplay
plink -ssh me@192.168.1.1 -pw password wget -q -O - http://192.1.159:8080/audio | madplay -Q --no-tty-control - &

Поскольку Вы видите, что http поток трудно кодируется. Было бы хорошо заставить адрес динамично снова использовать сценарий на других машинах. Какие-либо идеи?

5
задан 15.12.2014, 09:53

2 ответа

Вот простой пример, который получит ipv4 адрес текущей машины:

:: find IP address in scriptable format
:: !!Windows 7 specific at the moment!!
:: Note this only works with one adapter connected
@echo off
:: get ipv4
ipconfig | findstr IPv4 > ipadd.txt

:: For statement to find the numbers
for /F "tokens=14" %%i in (ipadd.txt) do ( 
@echo %%i 
)
del ipadd.txt /Q

Это просто echos IP, но можно интегрировать его в.


Или можно попробовать это и не использовать временные файлы:

for /f "tokens=14" %%a in ('ipconfig ^| findstr IPv4') do set _IPaddr=%%a
echo IP is: %_IPaddr%
2
ответ дан 07.12.2019, 17:02

Вот команда для вывода шлюза по умолчанию, затем команда для вывода IP ноутбука, локального IP. Именно так Вы видите те 2 команды

Затем команда для дампа локального IP один, который Вы хотите в файл, названный afile.

Затем команда для дампа afile в переменную среды, названную a

Можно загрузить grep с gnuwin32

C:\>ipconfig | grep -E -i "def" | grep -E -o "[0-9][0-9.]+"  
192.168.1.254

C:\>ipconfig | grep -E -i "IP Address" | grep -E -o "[0-9][0-9.]+"  
192.168.1.67

C:\>ipconfig | grep -E -i "IP Address" | grep -E -o "[0-9][0-9.]+" > afile

C:\>for /f %f in ('type afile') do set a=%f

C:\>set a=192.168.1.67   <-- that got executed automatically

C:\>echo %a%
192.168.1.67

C:\>

Таким образом, Вашим bat-файлом мог быть dothis.bat, и он будет иметь эти 2 строки, и конечно можно исправить название файла (afile) и переменной среды (a). отметьте в bat-файле, который Вы используете %% f (или безотносительно буквы) вместо %f

ipconfig | grep -E -i "IP Address" | grep -E -o "[0-9][0-9.]+" > afile  
for /f %%f in ('type afile') do set a=%%f  

более опрятная альтернативная вторая строка к 2 bat-файлам строки была бы

for /f %%f in (afile) do set a=%%f
2
ответ дан 07.12.2019, 17:02

Острота Windows 7:

for /F "tokens=14" %i in ('"ipconfig | findstr IPv4"') do SET LOCAL_IP=%i
2
ответ дан 07.12.2019, 17:02

Теги

Похожие вопросы