【コマンドプロンプト】同一ネットワークの複数の端末にファイルを配布するバッチ

コマンドプロンプト

先日、同一ネットワークにある数十台の端末に対して、共有フォルダ上にあるファイルを配布する機会がありました。
その時に作成したバッチファイルをメモします。

赤文字は環境によって修正が必要です。

電源がついているか確認する

@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$」

タイトルとURLをコピーしました