ショートカット作成

久しぶりにスクリプトサンプルを作成しました。
ショートカットを作成したいときに使用出来るVBScriptです。Windowsにログオンした時に処理を行う必要がある場合には、これを使ってログインユーザのスタートアップにプログラムを登録したり、使いやすいようにデスクトップにショートカットを作成したりする事が出来ます。
詳しい使い方は引数指定なしで起動してもらうとヘルプが出るのでそれを見てください。


※ 使い方

[usage]
C:\> WScript MakeShortCut.vbs [作成元] [作成先(省略可)]

[作成先]には特殊フォルダを指定する事も可能となっています

========================
(1) STARTUP : 実行ユーザのスタートアップに作成
(2) DESKTOP : 実行ユーザのデスクトップに作成
(3) FAVORIT : 実行ユーザのお気に入りに作成
(4) MY_DOCS : 実行ユーザのMy Documentsに作成
(5) SEND_TO : 実行ユーザのSendToに作成
========================


※ ソースファイル

'#########################################################
' ショートカットを作成する為のVBScriptです
'
' [ファイル名]
' MakeShortCut.vbs
'
'
'#########################################################

Option Explicit

Dim objWsh       ' 各オブジェクト作成用WshShell
Dim objFS        ' ファイル確認用FileSystemObject
Dim objShortCut  ' ショートカット用オブジェクト
Dim ToPath       ' 作成先パス格納用オブジェクト
DIm Judge        ' 条件判断用オブジェクト

' WshShellオブジェクト作成
Set objWsh = WScript.CreateObject("WScript.Shell")

' 引数の有無を格納
Judge =  WScript.Arguments.Length < 1 

' 引数はあるが、ヘルプ表示用の場合
If Judge = False Then
  Judge =  WScript.Arguments(0) = "/?"
End If

' 引数が無い場合
If Judge Then
  WScript.Echo "引数としてショートカットの作成元と" _
             & "作成先の絶対パスを指定してください" _
             & vbCRLF                               _
             & "(作成先を省略するとデスクトップに"  _
             & "ショートカットが作成されます"       _
             & vbCRLF & vbCRLF                      _
             & "[usage] " & vbCRLF                  _
             & " C:\> WScript MakeShortCut.vbs"     _
             & " [作成元] [作成先(省略可)]"         _
             & vbCRLF & vbCRLF                      _
             & "[作成先]には特殊フォルダを指定する" _
             & "事も可能となっています"             _
             & vbCRLF & vbCRLF                      _
             & "=================" _
             & "======="                     _
             & vbCRLF                               _
             & "(1) STARTUP : "                     _
             & " 実行ユーザのスタートアップに作成"  _
             & vbCRLF                               _
             & "(2) DESKTOP : "                     _
             & " 実行ユーザのデスクトップに作成"    _
             & vbCRLF                               _
             & "(3) FAVORIT : "                     _
             & " 実行ユーザのお気に入りに作成"      _
             & vbCRLF                               _
             & "(4) MY_DOCS : "                     _
             & " 実行ユーザのMy Documentsに作成"    _
             & vbCRLF                               _
             & "(5) SEND_TO : "                     _
             & " 実行ユーザのSendToに作成"          _
             & vbCRLF                               _
             & "=================" _
             & "======="
  WScript.Quit(-1)
End If

' ### 作成先のフォルダへのパスを設定 ###
' 引数が省略された場合
If WScript.Arguments.Length = 1 Then
  ToPath = objWsh.SpecialFolders("Desktop")

Else
  Select Case WScript.Arguments(1)

    ' 第2引数がSTARTUPの場合
    Case "STARTUP"
      ToPath = objWsh.SpecialFolders("Startup")

    ' 第2引数がDESKTOPの場合
    Case "DESKTOP"
      ToPath = objWsh.SpecialFolders("Desktop")

    ' 第2引数がFAVORITESの場合
    Case "FAVORIT"
      ToPath = objWsh.SpecialFolders("Favorites")

    ' 第2引数がMYDOCの場合
    Case "MY_DOCS"
      ToPath = objWsh.SpecialFolders("MyDocuments")

    ' 第2引数がSENDTOの場合
    Case "SEND_TO"
       ToPath = objWsh.SpecialFolders("SendTo")

    ' 第2引数が普通の絶対パスである場合
    Default
      ToPath = WScript.Arguments(1)
  End Select
End If

' ファイル確認用FileSystemObject
Set objFS  = WScript.CreateObject("Scripting.FileSystemObject")

' 作成元ファイルの有無をチェック
If objFS.FileExists( WScript.Arguments(0) ) = 0 Then
  WScript.Echo "ファイル '"         _
             & WScript.Arguments(0) _
             & "'は存在しません"
  WScript.Quit(-1)
End If

' 作成先のフォルダの有無をチェック
If objFS.FolderExists( ToPath ) = 0 Then
  WScript.Echo "ファイル '"         _
             & WScript.Arguments(1) _
             & "'は存在しません"
  WScript.Quit(-1)
End If

' ショートカット作成用オブジェクト作成
Set objShortCut = objWsh.CreateShortcut( _
                    ToPath & "\"                            _
                  & objFS.GetFileName(WScript.Arguments(0)) _
                  &  ".lnk" )
objShortCut.TargetPath = WScript.Arguments(0)
objShortCut.Save

WScript.Quit(0)