CMD/Batch: 如何在另一组命令中使用 FOR /F 循环的输出
CMD/Batch: How to use the output of a FOR /F loop in another set of commands
Whosebug 和一般编码的新手。我能够编写一个批处理来解析网络上 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
其中 returns 以下 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"
结合两者!
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
打开一百个浏览器 windows:
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"
}
Whosebug 和一般编码的新手。我能够编写一个批处理来解析网络上 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
其中 returns 以下 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"
结合两者!
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
打开一百个浏览器 windows:
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"
}