-->

从命令提示符比较文件的创建日期(Compare file creation dates from t

2019-10-19 15:17发布

在我的大学,我们使用VMware相当广泛,允许在很大程度上,否则锁定的计算机管理任务的实验。 我使用相同的虚拟机在家里,所以我不担心我的本地PC的杂乱环境,将其复制到从我的USB闪存驱动器。

该VM我用的就是snapshot'd与所有我喜欢的设置,并设置恢复到快照上的关机,所以最好是永远不会改变。 当我使用多台电脑,我有一个脚本来检查,如果虚拟机存在,如果没有,过副本,并安排一个自动打开下次登录。

我现在的剧本是这样的:

@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"

我的问题是这样的; 有时我做出改变的VM,并更新快照。

我想我的脚本源文件(USB)连接到本地文件(台式机)的创建日期进行比较。 如果本地有新的,那么显然它已经自上次更新复制是罚款运行,但如果源文件是新的,那么当地的需要更新。

我打算使用vmware.log中作为比较文件,因为它的小,并保持它的创建日期(有些VM文件被删除,并在虚拟机中运行过程中重新创建)。

我已经冲刷互联网和最好的,我发现相比日期和上市最新的; 但我很限批脚本知识,我不知道如何管一ROBOCOPY命令关闭该输出。

Answer 1:

这应该这样做。

@echo off

for /f "tokens=* usebackq" %%d in (`wmic datafile where Name^="C:\\Users\\[Username]\\Desktop\\Win7x86\\vmware.log" get creationdate ^| findstr ^"[0-9]^"`) do ( set tmpd=%%d )
set vmlocaldate=%tmpd:~0,8%

for /f "tokens=* usebackq" %%d in (`wmic datafile where Name^="F:\\Virtual Machines\\Win7x86\\vmware.log" get creationdate ^| findstr ^"[0-9]^"`) do ( set tmpd=%%d )
set vmusbdate=%tmpd:~0,8%

if %vmusbdate% gtr %vmlocaldate% goto copy

我不知道这将如何融入你的脚本,因为它需要插入USB驱动器; 此刻的你可以启动你的,如果它存在,它会马上打开本地虚拟机,你必须决定,如果你总是需要插入USB驱动器,并检查创建日期,如果你只是想检查时USB恰好是存在,或者改变您的USB提示,你可以跳过插入驱动器中。

NB。 这是在VBScript和PowerShell的显著容易。



文章来源: Compare file creation dates from the command prompt