以前書いた記事[59]「ネットワークドライブの再接続に失敗する?」の続編。
るびた先生がこの書き込みを見て「windowsにsleepコマンドないことを思い出した」と一言。
Windowsにはないが、例えばMacOS Xにはあるらしい。
sleepコマンドというのは「待つ」コマンドで、Windowsにはないので、記事[59]で書いたようにpingなどでwaitをかけるようになるんだと。
私の場合は、ipconfigでwaitをかけたわけだけど、まあある意味正解な方法のようだ。
そんな話をしてたら、またるびた先生が「あー、WSHならできるのか」とボソッ。
「だぶるえすえっち?なにそれ(’’?」と、アフォ全開な顔の私。
とりあえず、ぐぐって調べてみると、コマンドのユーティリティ?(多分正確には違います)
コマンドプロンプト同様、最初からインストールされているらしい。
そして3分後、るびたから、とあるファイルが送られてきた。
言ってたWSHの実行ファイルらしい。
中身をメモ帳で開いてみると、コマンド?
ネットワークドライブのドライブ名とかフォルダ名とかをノートPCで設定してある名前に書き換えて、いざ実行。
エラーが出たがエラー内容が「ローカルデバイス名は既に使用されています」なので、すでに接続されているネットワークドライブを切断してみた。
再度、実行ファイルをダブルクリック。
くおおお!エラーも出ず一瞬で指定したネットワークドライブのフォルダがマウントされた。
net useコマンドと同じ処理を、WSHでさせたようだ。
しかもsleepが使えるので、○秒待たせるということも可能。
もちろんコマンドプロンプトの画面は出ない。
そこで一番重要なのは、PCの起動時にちゃんと狙い通りに動くかどうかだ。
ということで、スタートアップに実行ファイルつっこんで再起動。
「ネットワークドライブの接続に失敗しました」のバルーンは出ない。
マイコンピューターを開くと、ちゃんとマウントされていた。
うっとおしい実行画面は一切でないのだ。
しかも、以前使ってたバッチファイルだと起動時にコマンドプロンプトが開き、すべてのコマンドが完了して閉じるまでに10〜15秒かかってた。
(Pingコマンドで数秒待たせるようなことはしていない)
それがWSHだと、なにも待たなくていい。
sleepは1秒の設定にしてあるが、それでも問題なくマウントされた。
以前よりも、起動時の時間が20秒くらい短縮されたようだ。
なにより、なんの画面もでないのがスッキリしてていい。
いやー、これ感動した。
今日からバッチファイルと取替えです。
とまあ、前置きがえらく長くなりましたが、WSHの実行ファイルの中身を記述しておきます。
WScript.sleep 1000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive "L:", "\\hs-dhgl123\share"
objNetWork.MapNetworkDrive "M:", "\\hs-dhgl123\naotoka"
objNetWork.MapNetworkDrive "N:", "\\hs-dhgl123\kantoka"
こんな感じ。バッチファイルの時同様、
objNetWork.MapNetworkDrive "ドライブ文字:","\\サーバ名\フォルダ名"
ドライブ文字とサーバー名フォルダ名は、ダブルクオーテーションでくくることと、MapNetworkDriveの後ろにちゃんとスペース入れること。
スペースの入れ忘れは、バッチファイルでもやってちゃんと動かなかった経験あるから重要なのはよくわかる。
あとsleep 1000で、1秒待つってこと。
500なら0.5秒。3000なら3秒だね。
うちは1000で、問題なくマウントできた。
Set objNetwork = CreateObject("WScript.Network")は、おまじないだそうだ(゜m゜*)
ちなみにWSHの実行ファイルを作成するには、コマンドをメモ帳などで書いて、それを保存する時に「ファイルの種類」を「すべてのファイル」にして、ファイル名を「保存名.vbs」にすればいいようだ。
WSHでは、他にもいろいろ出来るようで、コマンドを覚えたら楽しそうだ。
うーむ、いつもながら、るびた先生には頭が下がる。
これからもよろしくね('-'*
|
|
|
|