一般的stackoverflow和编码新手。我能够编写一个解析文本文件的批处理,以获取网络上的sonos播放器的一组IP地址,我还能够编写一个单独的批处理,使用这些IP地址来执行HTTP命令来关闭wifi同时在所有单元上,但我必须手动输入第一批中的所有IP地址。我想知道是否有一种方法可以自动将IP地址输入到第二个批处理文件中,或者如果有一种方法可以编写单个批处理文件,它将一次完成所有操作。以下示例仅处理2个IP,现实世界我需要使用20个以上,这就是为什么我想找到一种自动输入IP的方法
非常感谢任何帮助!
第一批:GetIPlist.bat
FOR /F "tokens=3 delims= " %%a in ('findstr "IP Address: *[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" AboutMySonos.txt') DO echo %%a
返回以下IP列表:
192.168.2.174
192.168.2.24
第二批:SonosWifiDefeat.bat
@echo off
start "http://IpAddress:1400/wifictrl?wifi=persist-off"
ping 1.1.1.1 -n 1 -w 1000 > nul
start "http://IpAddress:1400/wifictrl?wifi=persist-off"
答案 0 :(得分:1)
结合两个!
FOR /F "tokens=3 delims= " %%a in ('findstr "IP Address: *[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" AboutMySonos.txt') DO (
start "http://%%a:1400/wifictrl?wifi=persist-off"
ping %%a -n 1 -w 1000 > nul
start "http://%%a:1400/wifictrl?wifi=persist-off"
)
或者,更好的是,使用Powershell,这样您就不会start
打开一百个浏览器窗口:
Select-String -path .\AboutMySonos.txt -pattern "IpAddress: (.*)" | ForEach {
ip=$_.Matches.Groups[1].Value
Invoke-RestMethod "http://$ip:1400/wifictrl?wifi=persist-off"
ping $ip -n 1 -w 1000 > nul
Invoke-RestMethod "http://$ip:1400/wifictrl?wifi=persist-off"
}