LoginSignup
2

More than 5 years have passed since last update.

VMXのカスタマイズ用バッチファイル

Last updated at Posted at 2018-03-29

新規作成したVMwareのゲスト環境(vmx)を一括して追記するバッチファイルです。
Linuxコンソール画面低解像度問題やパフォーマンス改善のパラメータを同一形式の記述でvmxファイルに追加させます。

setup_vmx.cmd
Rem ****************************************************************************
    @Echo Off
    Cls

Rem 作業開始 *******************************************************************
:START
    Echo *** 作業開始 *******************************************************************
    Echo %DATE% %TIME%

    SetLocal EnableDelayedExpansion

    Set /P INP_DIR=変換するVMXファイルのフォルダー名を入力して下さい。
    If /I "%INP_DIR:~0,1%%INP_DIR:~-1,1%" EQU """" (
        Set DRV_VMX=%INP_DIR:~1,-1%
    ) Else (
        Set DRV_VMX=%INP_DIR%
    )

    For /R "%DRV_VMX%" %%F In ("*.vmx") Do (
        If /I "%%~xF" EQU ".vmx" (
            If Not Exist "%%F.orig" (
                Echo "%%F" を変換します。
                Ren "%%F" "%%~nxF.orig"
                For /F "Usebackq Tokens=1* Delims==" %%I In ("%%F.orig") Do (
                    If /I "%%I" EQU "guestOS " (
                        Set PRM_OS=%%J
                        If /I "!PRM_OS:~2,7!" EQU "windows" (
                            Echo>>"%%F" %%I=%%J
                        ) Else (
                            Echo>>"%%F" %%I=%%J
                            Echo>>"%%F" svga.minVRAMSize = 8388608                                  # SVGAの最低VRAM設定値^(高解像度にならない時に設定^)
                            Echo>>"%%F" svga.minVRAM8MB = TRUE
Rem                         Echo>>"%%F" monitor.phys_bits_used = "43"
Rem                         Echo>>"%%F" vmotion.checkpointFBSize = "8388608"
Rem                         Echo>>"%%F" vmotion.checkpointSVGAPrimarySize = "33554432"
                        )
                    ) Else If /I "%%I" EQU "tools.syncTime " (
                        Echo>>"%%F" tools.syncTime = "TRUE"                                     # 時刻同期の有効化
                    ) Else If /I "%%I" EQU "mem.hotadd " (
                        Echo>>"%%F" mem.hotadd = "FALSE"                                        # メモリ hot-add 機能の無効化
                    ) Else If /I "%%I" EQU "ethernet0.virtualDev " (
                        Set PRM_NIC=%%J
                        If /I "!PRM_NIC:~2,-1!" EQU "e1000" (
                            If /I "!PRM_OS:~2,7!" EQU "windows" (
                                Echo>>"%%F" %%I=%%J
                            ) Else (
                                Echo>>"%%F" ethernet0.virtualDev = "vmxnet3"                            # エミュレート・ドライバー
                            )
                        ) Else (
                            Echo>>"%%F" %%I=%%J
                        )
                    ) Else If /I "%%I" EQU "displayName " (
                        Set PRM_NAME=%%J
                        Echo>>"%%F" %%I=%%J
                               If /I "!PRM_NAME:~2,-1!" EQU "VM-PC01"       (Set SET_UUID=xx xx xx xx xx xx xx xx-xx xx xx xx xx xx xx xx
                        ) Else If /I "!PRM_NAME:~2,-1!" EQU "VM-PC02"       (Set SET_UUID=xx xx xx xx xx xx xx xx-xx xx xx xx xx xx xx xx
                        ) Else                                              (Set SET_UUID=
                        )
                    ) Else (
                        Echo>>"%%F" %%I=%%J
                    )
                )
                Echo>>"%%F" bios.bootDelay = "5000"                                     # BIOSのキー受け付け^(表示時間^)を長くする^(ms単位で指定^)
                Echo>>"%%F" logging = "false"                                           # ログ記録をオフにする
                Echo>>"%%F" mainMem.useNamedFile = "FALSE"                              # ゲストのメモリはファイルではなく実メモリを使う
                Echo>>"%%F" MemAllowAutoScaleDown = "FALSE"                             # 仮想マシンのメモリサイズを自動調節しないようにする
                Echo>>"%%F" MemTrimRate = "0"                                           # 未使用の物理メモリを解放しないようにする
                Echo>>"%%F" pciSound.enableVolumeControl = "FALSE"                      # ホストとゲストで音量を連動させない
                Echo>>"%%F" prefvmx.useRecommendedLockedMemSize = "TRUE"                # メモリ使用量が変化した時のメモリサイズを固定化
                Echo>>"%%F" sched.mem.pshare.enable = "FALSE"                           # ページ共有機能の無効化
                Echo>>"%%F" usb.generic.keepStreamsEnabled = "FALSE"                    # USB 3.0 マス ストレージ デバイスの強制設定^(UAS デバイスの不具合回避^)
                Echo>>"%%F" devices.hotplug = "FALSE"                                   # HotAdd/HotPlug 機能の無効化
                Echo>>"%%F" mks.keyboardFilter = "allow"
                Echo>>"%%F" isolation.tools.hgfs.disable = "FALSE"
                Echo>>"%%F" sharedFolder0.present = "TRUE"
                Echo>>"%%F" sharedFolder0.enabled = "TRUE"
                Echo>>"%%F" sharedFolder0.readAccess = "TRUE"
                Echo>>"%%F" sharedFolder0.writeAccess = "TRUE"
                Echo>>"%%F" sharedFolder0.hostPath = "D:\Share1"
                Echo>>"%%F" sharedFolder0.guestName = "Share1"
                Echo>>"%%F" sharedFolder0.expiration = "never"
                Echo>>"%%F" sharedFolder1.present = "TRUE"
                Echo>>"%%F" sharedFolder1.enabled = "TRUE"
                Echo>>"%%F" sharedFolder1.readAccess = "TRUE"
                Echo>>"%%F" sharedFolder1.writeAccess = "TRUE"
                Echo>>"%%F" sharedFolder1.hostPath = "D:\Share2"
                Echo>>"%%F" sharedFolder1.guestName = "Share2"
                Echo>>"%%F" sharedFolder1.expiration = "never"
                Echo>>"%%F" sharedFolder.maxNum = "2"
                If /I "!SET_UUID!" NEQ "" (
                    Echo>>"%%F" uuid.bios = "!SET_UUID!"
                    Echo>>"%%F" uuid.location = "!SET_UUID!"
                )
            )
        )
    )

Rem *** 作業終了 **************************************************************
:DONE
    EndLocal
    Echo %DATE% %TIME%
    Echo *** 作業終了 ******************************************************************
    Echo [Enter]を押下してください。
    Pause > Nul 2>&1
    Echo On

追記例(debian9のvmxファイルより)

svga.minVRAMSize = 8388608                                  # SVGAの最低VRAM設定値(高解像度にならない時に設定)
svga.minVRAM8MB = TRUE
tools.syncTime = "TRUE"                                     # 時刻同期の有効化
ethernet0.virtualDev = "vmxnet3"                            # エミュレート・ドライバー
bios.bootDelay = "5000"                                     # BIOSのキー受け付け(表示時間)を長くする(ms単位で指定)
logging = "false"                                           # ログ記録をオフにする
mainMem.useNamedFile = "FALSE"                              # ゲストのメモリはファイルではなく実メモリを使う
MemAllowAutoScaleDown = "FALSE"                             # 仮想マシンのメモリサイズを自動調節しないようにする
MemTrimRate = "0"                                           # 未使用の物理メモリを解放しないようにする
pciSound.enableVolumeControl = "FALSE"                      # ホストとゲストで音量を連動させない
prefvmx.useRecommendedLockedMemSize = "TRUE"                # メモリ使用量が変化した時のメモリサイズを固定化
sched.mem.pshare.enable = "FALSE"                           # ページ共有機能の無効化
usb.generic.keepStreamsEnabled = "FALSE"                    # USB 3.0 マス ストレージ デバイスの強制設定(UAS デバイスの不具合回避)
devices.hotplug = "FALSE"                                   # HotAdd/HotPlug 機能の無効化

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2