2017-02-17 5 views
0

一般的なスタックオーバーフローとコーディングの新機能です。私は、ネットワーク上のsonosプレーヤーのIPアドレスのセットのテキストファイルを解析するバッチを書くことができました。また、これらのIPアドレスを使用してHTTPコマンドを実行して無線LANをオフにする別のバッチを書くこともできました一度にすべてのユニットで、私は手動で最初のバッチからすべてのIPアドレスを入力しなければならなかった。 IPアドレスを2番目のバッチファイルに自動的に入力する方法があるかどうか、または1つのバッチファイルを作成してすべてを1つにする方法があるかどうかを知りたい。以下の例は2つのIPしか扱っていませんが、現実世界では20以上で動作するためにこれが必要です。そのためIPの入力を自動化する方法を探したいのですCMD /バッチ:別のコマンドセットでFOR/Fループの出力を使用する方法

ご協力いただきありがとうございます。

最初のバッチ: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 

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" 

答えて

1

は2を組み合わせて!さらに良い

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" 
) 

それとも、あなたが持っていないので、start百ブラウザウィンドウを開いPowerShellを使用します。

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" 
} 
関連する問題