5

Я передаю аудио со своего ноутбука с 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 жестко запрограммирован. Было бы неплохо получить адрес динамически, чтобы повторно использовать скрипт на других машинах. Есть идеи?

8 ответов8

4

Windows XP однострочная (IPv6 не установлен), примечание «findstr 192.» - вам может потребоваться удалить или настроить его (я использую его для выбора необходимого интерфейса):

for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i

echo %LOCAL_IP%
2

Windows 7 однострочная:

for /F "tokens=14" %i in ('"ipconfig | findstr IPv4"') do SET LOCAL_IP=%i
2

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

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

Затем команда для сброса файла в переменную окружения, которая называется

Вы можете скачать 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  

более аккуратная альтернатива второй строке файла с двумя строками будет

for /f %%f in (afile) do set a=%%f
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

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


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

for /f "tokens=14" %%a in ('ipconfig ^| findstr IPv4') do set _IPaddr=%%a
echo IP is: %_IPaddr%
2

ответил на мой собственный вопрос ...

for /f "tokens=3" %%i in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localipwc=%%i
)

for /f "tokens=1 delims=:" %%j in ("%localipwc%") do (
    set localip=%%j
)

echo "%localip%"

Вот еще лучше ... обратите внимание, что -4 в команде ping заставляет IPv4 на Win7 и игнорируется на XP ... (:~ 11 в имени переменной расширяется, начиная с 11 символа в переменной)

@echo off
cls
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo Your local IP is:"%localip:~11%"

Образец вывода:

Ваш локальный IP-адрес:«192.168.220.133»

0
for /f "tokens=3" %%i in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    echo %%i
)

Работает как на Windows 7, так и на Windows XP.

0

Основываясь на предыдущих ответах и отметив, что второй не будет работать, если у вас есть локальный IP, не начиная с 192, мы получаем:

for /F "tokens=2 delims=:" %i in ('"ipconfig | findstr IPv4"') do SET LOCAL_IP=%i

и если мы хотим поместить его в командный файл:

@for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IPv4"') do set LOCAL_IP=%%i
@echo Detected: Local IP = [%LOCAL_IP%]

(Пример результата: Обнаружено: Локальный IP = [10.67.1.205])

но если нам нужна переменная NOT, чтобы раньше содержать пробел, тогда нам нужно (win7, если есть проблема с 13 ...):

@for /F "tokens=13 delims=\  " %%i in ('"ipconfig | findstr IPv4"') do set LOCAL_IP=%%i
@echo Detected: Local IP = [%LOCAL_IP%]

(Пример результата: Обнаружено: Локальный IP = [10.67.1.205])

-1
@echo off
net use J: /d /y
rem Aqui se colocan manualmente ip
set matriz=172.25.103.*
set uno=172.25.20.*
set sur=172.25.18.*
set alamor=172.25.4.*
set autobanco=172.25.19.*
set cariamanga=172.25.7.*
set catacocha=172.25.3.*
set catamayo=172.25.2.*
set pangui=172.25.44.*
set macara=172.25.5.*
set hipervalle=172.25.35.*
set gualaquiza=172.25.21.*
set quito=172.25.10.*
set yanzatza=172.25.9.*
set zamora=172.25.8.*
set recreo=172.25.38.*
set machala=172.25.103.196
rem Estas dos líneas extraen el ip real del equipo a una variable
for /f "tokens=1,2* delims=:" %%i in (' ipconfig ^| find "IPv4" ') do set ip=%%j
set ip=%ip:~1%
echo %ip%
pause
rem Compara la dirección IP si esta ok va a Formas Agencias sino sale a ERROR1
if /I "%matriz%=="%ip%" goto matriz1 else
if /I "%uno%"=="%ip%" goto uno1 else
if /I "%sur%"=="%ip%" goto sur1 else
if /I "%alamor%"=="%ip%" goto alamor1 else
if /I "%autobanco%"=="%ip%" goto autobanco1 else
if /I "%cariamanga%"=="%ip%" goto cariamanga1 else
if /I "%catacocha%"=="%ip%" goto catacocha1 else
if /I "%catamayo%"=="%ip%" goto catamayo1 else
if /I "%pangui%"=="%ip%" goto pangui1 else
if /I "%macara%"=="%ip%" goto macara1 else
if /I "%hipervalle%"=="%ip%" goto hipervalle1 else
if /I "%gualaquiza%"=="%ip%" goto gualaquiza1 else
if /I "%quito%"=="%ip%" goto quito1 else
if /I "%yanzatza%"=="%ip%" goto yanzatza1 else
if /I "%zamora%"=="%ip%" goto zamora1 else
if /I "%recreo%"=="%ip%" goto recreo1 else
if /I "%machala%"=="%ip%" goto machala1 else goto error1
rem Mapeo de Unidad de red hacia Matriz
:matriz1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Agencia Uno
:uno1
IF EXIST S:\fgen1001.fmx goto fin
net use S: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Agencia Sur
:sur1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Alamor
:alamor1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Autobanco
:autobanco1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Cariamanga
:cariamanga1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Catacocha
:catacocha1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Catamayo
:catamayo1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Pangui
:pangui1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Macara
:macara1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Hipervalle
:hipervalle1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Gualaquiza
:gualaquiza1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Quito
:quito1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Yanzatza
:yanzatza1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Zamora
:zamora1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Recreo
:recreo1
IF EXIST J:\fgen1001.fmx goto fin
net use J: \\172.25.0.35\Forms
exit
rem Mapeo de Unidad de red hacia Machala
:machala1
IF EXIST M:\fgen1001.fmx goto fin
net use M: \\172.25.0.35\Forms
exit
:error1
echo IP INCORRECTA
pause
exit
:fin
exit

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .