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

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

```powershell: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ファイルより)

```text:
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 機能の無効化
```