我正在将音频从 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 [email protected] -pw password killall -9 madplay
plink -ssh [email protected] -pw password wget -q -O - http://192.1.159:8080/audio | madplay -Q --no-tty-control - &
如您所见,http 流是硬编码的。动态获取地址以便在其他机器上重复使用脚本会很好。有什么想法吗?
答案1
这是一个获取当前机器的 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
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%
答案3
这是输出默认网关的命令,然后是输出笔记本电脑 IP 的命令,即本地 IP。你只需看到这两个命令即可
然后使用命令将您想要的本地 IP 转储到名为 afile 的文件中。
然后,将文件转储到名为
您可以从 gnuwin32 下载 grep
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,它将包含这两行,当然您可以修改文件的名称 (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
一个更简洁的替代第二行 bat 文件是
for /f %%f in (afile) do set a=%%f
答案4
回答了我自己的问题...
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%"
这里有一个更好的...请注意,ping 命令中的 -4 在 Win7 上强制使用 IPv4,而在 XP 上会被忽略...(变量名中的 :~11 从 var 中的第 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”