WSH - VMwarePlayerへのショートカットを作成する
VMware Playerにて、仮想マシンの設定ファイル?(.vmxファイル)を引数に、vmplayer.exeを実行すると、その仮想マシンを起動してくれるので、すばやい起動が可能。
たとえば、「vmplayer.exe CentOS.vmx」のように実行すれば、CentOS.vmxを読み込んで、仮想マシンが起動する。
で、このようなショートカットをデスクトップに作成するWSHスクリプトを作成した。
スクリプト
普通に使ったら一応動いたが、すべて自己責任。
何かあっても作者は一切責任を負わない。
Option Explicit
'============================================================
'設定
Dim strVMwarePath
strVMwarePath = "C:\Program Files\VMware\VMware Player\vmplayer.exe"
'設定:ここまで
'============================================================
'------------------------------
'初期化
'------------------------------
Dim id
Dim strProgName
Dim objShortcut, objShell, objArgs
Dim strShortcutPath, strShortcutDir, strShortcutFile
Dim strVmxPath, strVMwareDir
'Shellオブジェクト
Set objShell = WScript.CreateObject("WScript.Shell")
'自身の名前
strProgName = WScript.ScriptName
'------------------------------
'関数
'------------------------------
'メッセージを表示して終了
Function ErrorExit( vMess )
WScript.Echo vMess
WScript.Quit
End Function
'パスのbasename
Function GetBaseName(DriveSpec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
GetBaseName = fso.GetFileName(DriveSpec)
End Function
'パスのdirname
Function GetDirName(DriveSpec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
GetDirName = fso.GetParentFolderName(Drivespec)
End Function
'------------------------------
'vmxファイルの取得
'------------------------------
Dim strExtArr
strExtArr = Array( ".vmdk", ".vmxf", ".vmsd" )
'コマンドライン引数
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then ErrorExit "vmxファイルが指定されていません。"
'コマンドライン引数の1番目
strVmxPath = objArgs(0)
'拡張子チェック
Dim intExt5, intExt4, intExtId
intExt4 = LCase( Right(strVmxPath, 4) )
intExt5 = LCase( Right(strVmxPath, 5) )
If intExt4 <> ".vmx" Then
'別の拡張子候補を探す
intExtId = -1
For id = 0 To UBound(strExtArr)
If intExt5 = strExtArr(id) Then
intExtId = id
Exit For
End If
Next
'別の候補は見つからず
If intExtId = -1 Then _
ErrorExit "指定されたファイルは、vmxファイルではありません。"
'拡張子の置き換え
strVmxPath = Left( strVmxPath, Len(strVmxPath) - 5 ) & ".vmx"
End If
'存在チェック
If CreateObject("Scripting.FileSystemObject").FileExists( strVmxPath ) = False Then _
ErrorExit "指定されたファイルが存在しません。"
'------------------------------
'作成するショートカットファイル名
'------------------------------
Dim strBaseName, strInp
'初期ファイル名=vmxファイル名のbody部
strBaseName = GetBaseName( strVmxPath )
strBaseName = Left( strBaseName, Len(strBaseName) - 4 ) '拡張子削除
'入力
strInp = InputBox( "作成するショートカットファイル名は?", strProgName, strBaseName )
If strInp = "" Then WScript.Quit
'拡張子チェック
If LCase( Right( strInp, 4 ) ) <> ".lnk" Then strInp = strInp & ".lnk"
'確定
strShortcutFile = strInp
'------------------------------
'ショートカット作成
'------------------------------
'デスクトップ
strShortcutDir = objShell.SpecialFolders( "Desktop" )
'ショートカットファイルのフルパス
strShortcutPath = strShortcutDir &"\"& strShortcutFile
'ショートカット作成
Set objShortcut = objShell.CreateShortcut( strShortcutPath )
'------------------------------
'プロパティ設定
'------------------------------
'対象ファイル(vmplayer.exe)
objShortcut.TargetPath = strVMwarePath
'コマンドライン引数(vmxファイル)
objShortcut.Arguments = """" & strVmxPath & """"
'作業フォルダ(vmplayer.exeと同じフォルダ)
strVMwareDir = GetDirName( strVMwarePath )
objShortcut.WorkingDirectory = strVMwareDir
'プロパティを保存
objShortcut.Save
使い方 その1. 「送る」メニューに入れておく
「送る」メニューに本スクリプトのショートカットを入れておいて、エクスプローラの右クリックから実行する。
使い方 その2. NHMの第二実行ファイルに指定
VMware Player(Virtual PC)用簡易スナップショット管理ツール「NHM」(eueeのおうち さん)の「第二実行ファイル」に指定しておき、NHMから本スクリプトを実行する。
これが、結構いい感じ。
テスト用のスナップショットを作った後に、右クリックして「ショートカット作成」をしておけば、次からは、ショートカットアイコンのダブルクリックだけで起動できる。
« WSH - dirnameとbasename | トップページ | Googleロゴ - セザンヌ 生誕172年 »
「プログラム・スクリプト」カテゴリの記事
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ(2012.05.18)
- [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1(2012.05.31)
- [CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー(2012.05.30)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2(2012.05.22)
- [CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック(2012.06.04)