在我的大学里,我们非常广泛地使用 VMware 来允许在其他被严重锁定的计算机上进行管理任务的实验。我在家里使用相同的虚拟机,所以我不必担心我的本地 PC 的杂乱环境,只需将它复制到我的 USB 闪存驱动器或从我的 USB 闪存驱动器复制它。
我使用的虚拟机是带有我喜欢的所有设置的快照,并设置为在关机时恢复为快照,因此理想情况下它永远不会改变。当我使用多台计算机时,我有一个脚本来检查 VM 是否存在,如果不存在,则将其复制过来并安排在下次登录时自动打开。
我当前的脚本如下所示:
@echo off
if exist "C:\Users\[Username]\Desktop\Win7x86\Win7x86.vmx" goto open
if not exist "C:\Users\[Username]\Desktop\Win7x86\Win7x86.vmx" echo VM files not found, preparing to copy from USB
goto usb
:usb
if exist "F:" goto copy
if not exist "F:" echo Please insert USB drive.
pause
goto usb
:copy
robocopy "F:\Virtual Machines\Win7x86" "C:\Users\[Username]\Desktop\Win7x86" /mir /eta
schtasks /create /ru [Username] /rp [Password] /xml "%cd%\Win7x86 Opener.xml" /tn "Win7x86 Opener"
goto open
:open
PATH "%PROGRAMFILES%\VMware\VMware Workstation\"
START vmware.exe -x "C:\Users\[Username]\Desktop\Win7x86\Win7x86.vmx"
我的问题是这个;有时我会更改虚拟机并更新快照。
我希望我的脚本将源文件(USB)的创建日期与本地文件(桌面)进行比较。如果本地较新,那么显然它自上次更新以来已被复制并且可以正常运行,但如果源文件较新,则本地需要更新。
我计划使用 vmware.log 作为比较文件,因为它很小并保留了它的创建日期(一些 VM 文件在 VM 运行过程中被删除并重新创建)。
我搜索了互联网,找到了最好的比较日期并列出了最新的;但是由于我的批处理脚本知识非常有限,我不知道如何从该输出中输出一个 robocopy 命令。