ユーザーが Active Directory ドメインのワークステーションにログインするたびに実行される logon.bat スクリプトがあります。
このスクリプトは、次のようなコマンドでいくつかのネットワーク ドライブをマップします。
net use x: \\192.168.0.2\share1
net use y: \\192.168.0.3\share2
net use z: \\192.168.0.4\share3
ただし、一部のワークステーションでは、ワークステーション自体が独自の LAN 接続を完全に確立する前に、このスクリプトが実行されます。次に、[スタート] メニュー > [コンピューター] に移動すると、マップされた各ドライブに赤い X が表示されます。この時点でネットワークが確立されているため、赤い X をクリックすると消えます。それでも、net-use コマンドを実行する前に、logon.bat スクリプトでネットワークが確立されていることを確認したいと思います。
グループ ポリシーの設定を変更する必要があるか、犯人ワークステーションの設定を変更する必要がある解決策を見てきました。ただし、現在のバッチ スクリプト内でこれを排他的に解決するソリューションに興味があります (そのスクリプトの外部にスクリプトの依存関係を追加する必要はありません)。
ネット使用コマンドを実行する前に任意の時間待機するように、バッチ スクリプトにタイムアウト (またはスリープ) を入れるだけの他のスクリプト ソリューションを見てきました。これらのソリューションは、「ドライブをマップするよりも少し遅れてマップする」または「ネットワークが確立される前に net-use コマンドを実行する危険性がある」待機定数を提供します。
代わりに、ネットワークが確立されているかどうかを毎秒チェックし、(成功すると) 前述の「net use」コマンドの実行に進むスクリプトが必要です。
Windows バッチ スクリプトでこれをどのように実現しますか?