デスクトップのファイルを全部チェック
サーバーの移行に伴って、サーバーにあるファイルへの
ショートカットがリンク切れとなる障害が発生する
ショートカットのリンクが切れているからといって、
普通にPCを触っている人なら、たいした問題とは
ならないのだが、ショートカットがなにかという
こと自体を知らない人にとっては、リンク先へ
いけないことはとても大問題になってしまう。
そこで、デスクトップとマイドキュメントにある
ショートカットファイルだけに絞って、リンク先を
変更してしまおう!ヾ(@°▽°@)ノ
っと考えた。
先日から使っている、VBScriptだ!ヘ(゚∀゚*)ノ
便利だし、アプリじゃないし、ループ処理さえ間違え
無ければ、簡単すぎるほど簡単だし!!
というわけで、フォルダ内のファイルを列挙する
方法の応用でショートカットファイルだけリンク先の
変更をやってみよう!( ̄ー☆
'Shellスクリプトを呼び出す。
Set ws = WScript.CreateObject("WScript.Shell")
Set Shell = CreateObject("Shell.Application")
'デスクトップフォルダをオブジェクトとしてセットする
Set objFolder = Shell.NameSpace(0)
'デスクトップのアイテムコレクション
Set objFolderItems = objFolder.Items()
'コレクションをForEachでループしてファイルを見る
For Each item in objFolderItems
'ファイル名を格納
str = objFolder.GetDetailsOf(item, 0)
'ショートカットファイルだった場合、
'リンク先変更のSubプロシージャを実行する
If objFolder.GetDetailsOf(item, 2) = "ショートカット" Then
'デスクトップフォルダパスを格納
desktop = ws.SpecialFolders("Desktop")
'Subプロシージャを呼び出し
Call ChangeTarget(str, desktop)
End If
Next
MsgBox "完了"
Set objDocuFolderItems = Nothing
Set objDocuFolder = Nothing
Set objFolderItems = Nothing
Set objFolder = Nothing
Set Shell = Nothing
Set ws = Nothing
'Sub プロシージャ
Sub ChangeTarget(StrFileName, FdrPath)
' ショートカット作成(既存ファイルは上書きします。)
Set shortcut = ws.CreateShortcut(FdrPath & "\" & StrFileName & ".lnk")
lnk = "リンク先"
shortcut.TargetPath = lnk
shortcut.Save
Set shortcut = Nothing
End Sub
以上です。
デスクトップフォルダをオブジェクトとして
格納するのがポイントかな?
オブジェクトとしてしまえば、その中のファイル達を
メンバとして列挙できるので、それに対して
ループ処理でやっちゃえばいいのだ!
我ながら・・・う~ん・・・
こんなことはみんなやっているかぁ~
まぁ、オレ的には満足として・・・・
よし!やった。やったはず。。。( ̄∇ ̄+)
これで、移行後のフォローが楽になった!
いい仕事したぞ・・・・・・・・はず・・・
最速攻略 VBScriptサンプル大全集/結城 圭介

¥2,919
Amazon.co.jp
ショートカットがリンク切れとなる障害が発生する
ショートカットのリンクが切れているからといって、
普通にPCを触っている人なら、たいした問題とは
ならないのだが、ショートカットがなにかという
こと自体を知らない人にとっては、リンク先へ
いけないことはとても大問題になってしまう。
そこで、デスクトップとマイドキュメントにある
ショートカットファイルだけに絞って、リンク先を
変更してしまおう!ヾ(@°▽°@)ノ
っと考えた。
先日から使っている、VBScriptだ!ヘ(゚∀゚*)ノ
便利だし、アプリじゃないし、ループ処理さえ間違え
無ければ、簡単すぎるほど簡単だし!!
というわけで、フォルダ内のファイルを列挙する
方法の応用でショートカットファイルだけリンク先の
変更をやってみよう!( ̄ー☆
'Shellスクリプトを呼び出す。
Set ws = WScript.CreateObject("WScript.Shell")
Set Shell = CreateObject("Shell.Application")
'デスクトップフォルダをオブジェクトとしてセットする
Set objFolder = Shell.NameSpace(0)
'デスクトップのアイテムコレクション
Set objFolderItems = objFolder.Items()
'コレクションをForEachでループしてファイルを見る
For Each item in objFolderItems
'ファイル名を格納
str = objFolder.GetDetailsOf(item, 0)
'ショートカットファイルだった場合、
'リンク先変更のSubプロシージャを実行する
If objFolder.GetDetailsOf(item, 2) = "ショートカット" Then
'デスクトップフォルダパスを格納
desktop = ws.SpecialFolders("Desktop")
'Subプロシージャを呼び出し
Call ChangeTarget(str, desktop)
End If
Next
MsgBox "完了"
Set objDocuFolderItems = Nothing
Set objDocuFolder = Nothing
Set objFolderItems = Nothing
Set objFolder = Nothing
Set Shell = Nothing
Set ws = Nothing
'Sub プロシージャ
Sub ChangeTarget(StrFileName, FdrPath)
' ショートカット作成(既存ファイルは上書きします。)
Set shortcut = ws.CreateShortcut(FdrPath & "\" & StrFileName & ".lnk")
lnk = "リンク先"
shortcut.TargetPath = lnk
shortcut.Save
Set shortcut = Nothing
End Sub
以上です。
デスクトップフォルダをオブジェクトとして
格納するのがポイントかな?
オブジェクトとしてしまえば、その中のファイル達を
メンバとして列挙できるので、それに対して
ループ処理でやっちゃえばいいのだ!
我ながら・・・う~ん・・・
こんなことはみんなやっているかぁ~
まぁ、オレ的には満足として・・・・
よし!やった。やったはず。。。( ̄∇ ̄+)
これで、移行後のフォローが楽になった!
いい仕事したぞ・・・・・・・・はず・・・
最速攻略 VBScriptサンプル大全集/結城 圭介

¥2,919
Amazon.co.jp