【问题标题】:Compare file creation dates from the command prompt从命令提示符比较文件创建日期
【发布时间】:2014-03-20 04:19:39
【问题描述】:

在我的大学,我们广泛使用 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 命令。

【问题讨论】:

  • 我经常使用dostips.com 来寻找更巧妙的方法来让 DOS 完成原本难以做到的事情。这是一个页面 (dostips.com/DtTipsDateTime.php),它显示了如何使用 Julian 日期计算文件的年龄。一旦您知道 USB 文件的 Julian 日期并且它是 counter-local-file,您就可以使用 if %julian1% gtr %julian2% 知道哪个是最近的...

标签: batch-file robocopy date-comparison


【解决方案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 提示以允许您跳过插入驱动器。

注意。它在 VBScript 和 PowerShell 中都容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多