ファイルサーバを構築していると、サーバをリプレースする場合なんかに物凄く労力が必要になります。
システム的にDFSを構成していればそれほどでも無いかも知れませんが、スタンドアローンのファイルサーバを移転しなくてはいけなくなった時なんかは、例えばユーザの既に作成しているショートカットのリンク先変更やらで、それはそれは物凄く手間です。
・・・というわけで、今回はショートカットを一括置換するスクリプトを作ってみました。
ただし、対応しているのは拡張子”.lnk”と”.url”のデータのみで、ワードやエクセルの中身のショートカットには利用出来ません。
使い方
以下のスクリプトをテキストに保存して、拡張子を”vbs”に変更して、スクリプト中のPRECEDENT_TARGET_UNCとNEW_TARGET_UNCの値を各自の環境に合わせてください。
あとは変更したいファイルをドラッグ&ドロップするだけです。
例えば”\\server01\share”を”\\server02\share”に書き換えたい場合は以下のように設定します。
パスにはドライブ名を利用する事も出来ます。”\\server01\share”をVドライブにマウントする場合であれば、以下のように設定してください。
また、書き換え時にバックアップを取ったりしませんので、実行する前にバックアップを必ずとって、一度テスト環境でテストしてください。
pnpkさん
素晴らしいスクリプト作成ありがとうございます。
入替の時大変お世話になりました。
省略さん
あなたのコメントで私の環境でも使えました。
ありがとうございます。
自己解決したエラーを報告いたします。
vbsの文字コードをUTF-8 → SJISにして保存しなおして解決しています。
UTF-8のまま実行した場合以下のエラーが発生しました。
行57 文字 53
終了していない文字列型の定数です。
800A0409
>に さん
こんばんは、コメントいただきありがとうございます。
再度スクリプト見直しました。
おっしゃる通り、41行目と45行目のstrPATHの部分、利用しておりませんでした。
取り急ぎ問題のある行に関してはコメントアウトしました。
去年いただいた せき さんにも申し訳無い事をしました。
ご指摘いただきありがとうございました。
よろしくお願いします。
45行目は不要では?
>せき さん
こんばんは、コメントありがとうございます。
上記スクリプト、ショートカットをドラッグ&ドロップして動作させる事を想定して作ったので、そのままダブルクリックで実行すると引き数が無いのでエラーになります。
ダブルクリックでスクリプトを実行されていた場合、スクリプトにドラッグ&ドロップでファイルを投げ入れて動作するか確認ください。この動作でエラーが出る場合、ショートカットを保存しているフォルダパスやファイル名に問題があるかもしれません。
45行目はドラッグ&ドロップするファイルのパス情報を取得する部分なので、引き数としてファイルパスが正しくスクリプト側に伝わっていない事が考えられます。
根本的な対策では無いですが、一度動作ご確認いただければと思います。
よろしくお願いします。
45行目INDEXが無効っていわれました~
ものすごく簡単にショートカットの変更ができました。
スクリプトの形なのでやり方もわかり、他にも応用が利きそうです。
大変勉強になりました。ありがとうございます。
助かりました。
自分は以下の分を追加して使用しました。
objShellLink.WorkingDirectory=Replace(strSHORTCUT_PATH,PRECEDENT_TARGET_UNC,NEW_TARGET_UNC,1,1,1)
>komikoniさん
コメントありがとうございます。
ちょうど去年の今頃に作ったVBスクリプトです。
お役に立てたようでよかったです。
公開ありがとうございます。超便利ですね。
こういうフリーソフトあるかなと思って探して無かったので
VBSで書くしかないかなと思ってたところでした。
急いでたので助かりました~