
Windows 10 では、マップされたネットワーク ドライブが存在しない場合にのみ、スケジュールされたタスクを実行することは可能ですか?
背景: バックアップ サービス (CrashPlan) 用に 2 つのネットワーク ドライブをマップするタスク (バッチ スクリプト) があります。バッチ スクリプトは、ドライブが存在するかどうかを確認しif exist Y:\ (...)
、存在しない場合はマップしますnet use Y: ...
。
これは機能しますが、これらのネットワーク パスはシステムの起動時またはログイン時に存在しない可能性があるため (コンピューターの起動時に NAS がオフになっている)、ネットワーク パスが使用可能になった場合にドライブがマップされるように、このタスクを定期的に繰り返す必要があります。
しかし、実際にタスクを繰り返す必要があるのは、ドライブがまだマップされていない場合のみなので、ドライブがすでに存在する場合は常にタスクをスキップしたいと思います。
いずれにせよ、タスクを実行しても害はありません。コマンドをスキップするだけですnet use
が、必要のないときにタスクをスキップできれば、ログがよりきれいになります。
根本的な「問題」は、ネットワーク パスが利用できる (NAS デバイスがオンラインである) ときはいつでも、SYSTEM アカウントで実行されている 2 つのマップされたドライブが CrashPlan サービスに常に存在するようにすることです。これに対してまったく異なるアプローチを提案していただいても結構ですが、この質問の回答が乱雑にならないように、コメントに残しておくことをお勧めします。アドバイスがあれば、そのような質問を別途投稿させていただきます。
答え1
スクリプトに、成功時にこのタスクを無効にするコマンドを追加します。if exist Y:\ (...) and maps it otherwise net use Y: ...
schtasks.exe /CHANGE /TN "YourBatchScriptTask" /DISABLE
コンピュータの起動時に「YourBatchScriptTask」を有効にするタスクをもう1つ追加します
schtasks.exe /CHANGE /TN "YourBatchScriptTask" /ENABLE
しかし、私なら、NAS へのネットワーク接続が切断されないことを保証できないため、この「チェック」部分を残します。(子猫がイーサネット ケーブルで遊んだと仮定します)