木曜日SHAREツイートシェアはてブLINEPocketファイルサーバを構築していると、サーバをリプレースする場合なんかに物凄く労力が必要になります。システム的にDFSを構成していればそれほどでも無いかも知れませんが、スタンドアローンのファイルサーバを移転しなくてはいけなくなった時なんかは、例えばユーザの既に作成しているショートカットのリンク先変更やらで、それはそれは物凄く手間です。・・・というわけで、今回はショートカットを一括置換するスクリプトを作ってみました。対応しているのは拡張子”.lnk”と”.url”のデータのみで、ワードやエクセルの中身のショートカットには利用出来ません。以下のスクリプトをテキストに保存して、拡張子を”vbs”に変更して、スクリプト中のPRECEDENT_TARGET_UNCとNEW_TARGET_UNCの値を各自の環境に合わせてください。あとは変更したいファイルをドラッグ&ドロップするだけです。”\\server01\share”を”\\server02\share”に書き換えたい場合は以下のように設定します。"\\server02"パスにはドライブ名を利用する事も出来ます。”\\server01\share”をVドライブにマウントする場合であれば、以下のように設定してください。"V:"また、書き換え時にバックアップを取ったりしませんので、実行する前にバックアップを必ずとって、一度テスト環境でテストしてください。NEW_TARGET_UNCで指定した参照先にPRECEDENT_TARGET_UNCを書き換えるスクリプトです。各クライアント上に残っているショートカットの参照先を変更するのが非常に面倒だったので作成しました。このスクリプトをテキストファイルに保存し、拡張子を".vbs"に変更してください。ショートカットファイルをドラッグ&ドロップで新しいUNCパスに変更します。一度に複数のファイルをドラッグ&ドロップで一括更新する事が可能ですが、あまり多いとエラーになります。このスクリプトは実行すると、ユーザの同意無しに対象ファイルのリンク先を変更します。実行前には必ずバックアップを取ってから実行してください。更新権限の無いファイルに対して操作を行うとエラーになります。存在しないパスを入力すると処理が非常に遅くなります。NEW_TARGET_UNCに書き換えた後のUNCパス、もしくはリンクを登録します。対象ファイルは拡張子が".lnk"、もしくは".url"のファイルのみです。誤動作を極力回避させるために、先頭からのパス変更のみを一回だけ実行します。"FileServer01"だけです。パスにはドライブ名も利用する事が出来ます。"ショートカット書き換え処理が完了しました。objShellLink.TargetPath'先頭から文字列を評価しています。"エラーが発生しました。"ファイルを更新する事が出来ませんでした。"ファイルのアクセス権限、または読み取り属性を確認してください。"このファイルに対する処理はスキップします。さんこんばんは、コメントいただきありがとうございます。再度スクリプト見直しました。おっしゃる通り、41行目と45行目のstrPATHの部分、利用しておりませんでした。取り急ぎ問題のある行に関してはコメントアウトしました。さんにも申し訳無い事をしました。ご指摘いただきありがとうございました。さんこんばんは、コメントありがとうございます。上記スクリプト、ショートカットをドラッグ&ドロップして動作させる事を想定して作ったので、そのままダブルクリックで実行すると引き数が無いのでエラーになります。ダブルクリックでスクリプトを実行されていた場合、スクリプトにドラッグ&ドロップでファイルを投げ入れて動作するか確認ください。この動作でエラーが出る場合、ショートカットを保存しているフォルダパスやファイル名に問題があるかもしれません。45行目はドラッグ&ドロップするファイルのパス情報を取得する部分なので、引き数としてファイルパスが正しくスクリプト側に伝わっていない事が考えられます。根本的な対策では無いですが、一度動作ご確認いただければと思います。日曜日ものすごく簡単にショートカットの変更ができました。スクリプトの形なのでやり方もわかり、他にも応用が利きそうです。ありがとうございます。自分は以下の分を追加して使用しました。金曜日>komikoniさんコメントありがとうございます。去年の今頃に作ったVBスクリプトです。お役に立てたようでよかったです。公開ありがとうございます。いうフリーソフトあるかなと思って探して無かったのでVBSで書くしかないかなと思ってたところでした。コメントをキャンセルメールアドレスが公開されることはありません。