« WSH - dirnameとbasename | トップページ | Googleロゴ - セザンヌ 生誕172年 »

2011年1月12日 (水)

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. 「送る」メニューに入れておく

「送る」メニューに本スクリプトのショートカットを入れておいて、エクスプローラの右クリックから実行する。

Mkvmlink01

使い方 その2. NHMの第二実行ファイルに指定

VMware Player(Virtual PC)用簡易スナップショット管理ツール「NHM」(eueeのおうち さん)の「第二実行ファイル」に指定しておき、NHMから本スクリプトを実行する。

Mkvmlink02

これが、結構いい感じ。
テスト用のスナップショットを作った後に、右クリックして「ショートカット作成」をしておけば、次からは、ショートカットアイコンのダブルクリックだけで起動できる。

« WSH - dirnameとbasename | トップページ | Googleロゴ - セザンヌ 生誕172年 »

プログラム・スクリプト」カテゴリの記事

2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ