- PR -

バッチファイル内でのタイムアウトについて

1
投稿者投稿内容
MOMO
会議室デビュー日: 2007/06/25
投稿数: 3
投稿日時: 2007-09-07 13:59
WindowsServer2003R2にて、タスクスケジューラにバッチファイルを登録しています。

そのバッチファイルの中で、以下の通りMOVEコマンドを使用しています。

 MOVE /Y ファイルA  \\サーバB\・・・\

しかし、ローカルサーバからサーバBへの接続ができない時、
このコマンドでずっと停止してしまっているようです。
バッチファイルでもタイムアウトの指定はできるのでしょうか。
また、サーバへの接続可否の条件文を入れるとしたらどのようにすればよいのでしょうか。(pingで戻り値判定などできるのでしょうか)

お知恵を拝借したいと思います。どうぞ宜しくお願い致します。


Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 2007-09-09 17:47
MOVEコマンド(やCOPY、XCOPYなど)ではタイムアウトの指定はできないと思われます。

 ですので、ping の戻り値で対象サーバが存在するかどうかをまず判断するか(ping 1.2.3.4などを実行し、戻り値が0なら存在する、1なら存在しない、となっているようです。手元のPCでは)、if exist ¥¥サーバ名¥〜 のようにして、事前にサーバにアクセスできるかどうかをチェックするという方法があります。ちなみに戻り値の判断は、if errorlevel 〜です。

 ですがもっと適切なのは、robocopyコマンドを使う方法ではないでしょうか。

参考
・TIPS「robocopyでフォルダをバックアップ/同期させる」
http://www.atmarkit.co.jp/fwin2k/win2ktips/877robomir/robomir.html

 robocopyは、もともとはファイル/フォルダの同期用コマンドですが、通信できない場合のタイムアウト時間や再試行回数を設定できますし、(copyではなく)moveコマンドと同様に移動にも利用することができるようです。
 robocopyは、Windows Server 2003のリソースキットに含まれています。
1

スキルアップ/キャリアアップ(JOB@IT)