0

通常是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" 
4

1 回答 1

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" 
}
于 2017-02-17T22:17:50.903 回答