先日、同一ネットワークにある数十台の端末に対して、共有フォルダ上にあるファイルを配布する機会がありました。
その時に作成したバッチファイルをメモします。
※赤文字は環境によって修正が必要です。
電源がついているか確認する
@echo off
echo PINGで疎通確認
for /l %%f in (100,1,120) do (
ping 192.168.0.%%f
echo %%f
pause
)
echo END
pause
IPアドレスが、192.168.0.100~192.168.0.120 の端末に対してPINGを飛ばす処理です。
電源がついてないと、この後のファイル送信でエラーになる、かつ結構待たされるので、
事前にpingを飛ばして電源がついてるか確認しておきます。
電源がついているのにpingが飛ばない場合は、送信先端末のファイアウォールが有効になっているのかもしれません。(おそらくICMPのポートが空いていない)
pauseで処理を止めるのは、結果をみて疎通できているかをチェックするためです。
ファイルを配布する
@echo off
echo NETUSE 共有フォルダ
net use \\192.168.10.1\共有フォルダ\配布元 password /user:Administrator /Y
for /l %%f in (100,1,120) do (
echo NETUSE 配布先端末
net use \\192.168.0.%%f\d$\work password /user:Administrator /Y
echo ファイルコピー
Xcopy /E \\192.168.10.1\共有フォルダ\配布元 \\192.168.0.%%f\d$\配布先
echo 正常にファイルコピーできていたらチェック
pause
)
「\\192.168.10.1\共有フォルダ\配布元」配下にある全てのファイルを、「\\192.168.0.%%f\d$\配布先」に上書きコピーします。
Xcopyのオプションに「/Y」をつけると、上書きコピーの時に確認されません。
うまく動かないとき
前述できなかった細かな書き方の部分について記述しています。(似たようなバッチファイルをつくるたび、調べている気がするので書き留めます。)
・for文の「in」や「do」の前後には必ず半角スペースをいれる
・dドライブ自体を指定するときは、「d$¥」ではなく「d$」