ファイルサーバが移行してファイルサーバのパスが変わったとか理不尽なことをいわれたので
ショートカットを書き換えるスクリプトを書いた。
書き方がVBSっぽくないのはきにしちゃだめ。
使い方
L3.4の "\\beforeserver\share" が "\\afterserver\share" に変わることになるので必要に応じて書き換えて下さい。
以下ソースを任意のフォルダに「ショートカット書き換え.vbs」などの名前で保存をして書き換えたいショートカットを複数選択してドラッグアンドドロップしてください。
ファイルを置き換えるので事前にバックアップを取っておくことをオススメします。
Option Explicit 'ここを書き換える Const OLD_LINK = "\\beforeserver\share" Const NEW_LINK = "\\afterserver\share" Call Main() Private Sub Main() Dim objFileSys Dim filePath Set objFileSys = CreateObject("Scripting.FileSystemObject") For Each filePath In WScript.Arguments If objFileSys.GetExtensionName(filePath) = "lnk" Then Call Rewrite(filePath, objFileSys) End If Next Wscript.Echo "完了" End Sub Function Rewrite(filePath, objFileSys) On Error Resume Next Dim wshShell Dim targetShortcut Dim targetPath Dim newLink set wshShell = CreateObject("WScript.Shell") set targetShortcut = wshShell.CreateShortcut(filePath) targetPath = targetShortcut.TargetPath If UCase(Left(targetPath,Len(OLD_LINK))) = UCase(OLD_LINK) Then newLink = Replace(targetPath,OLD_LINK,NEW_LINK,1,1,1) objFileSys.DeleteFile filePath set targetShortcut = wshShell.CreateShortcut(filePath) targetShortcut.TargetPath = newLink targetShortcut.Save() 'Wscript.Echo "書き換えたよ" + targetShortcut.TargetPath End If If Err <> 0 Then WScript.Echo "PATH:" & filePath & " [" & Err.Number & "][" & Err.Description & "]" End If End Function
注意点
当初ネットに転がっていたものを流用しようとしたのだが、Win7ではうまく動かなかったので
ショートカットを一旦削除して再作成するように変更した。
また再作成しているが、引き継いでいるのは「TargetPath」だけなので作業フォルダとかショートカットとか設定している場合は消えてしまうので注意が必要。