如何编写一个比较修改日期并查看哪个更新的脚本?

use*_*627 2 windows csv command-line batch-file

现在我发现了一些使用java和python的东西,但是我想要使用CMD的东西,因为这是我们已经拥有的任何Win PC.我有一个从XLS文件创建的CSV.XLS文件经常更新.我一直在尝试编写一个在登录时运行的脚本,它检查XLS文件和CSV文件,如果XLS更新(最近修改过),它将运行libreoffice命令,将其输出为";" 分隔的CSV.我在做什么

FOR /F "TOKENS=1" %%A IN ('DIR /o:-d "\\path" ^| FIND "Part of filename"') DO SET "Chk1=%%A" 
Run Code Online (Sandbox Code Playgroud)

这给了我一个例子Chk1 = 1/3/2015.如果Chk2 = 1/2/2015,我做

IF "%Chk1%" GTR "%Chk2%" ECHO Hi
Run Code Online (Sandbox Code Playgroud)

我嗨.问题是新的一年到来了,如果Chk2 = 12/30/2014,上面的相同代码没有给我"嗨".我假设它完全忽略了这一年,只是在寻找一个月和日.这给我的另一个问题是,因为它正在查看365之外的日期,如果我在同一天内运行脚本,它将看不到更改.原因是"1/3/2015 10:24"被视为大于"1/3/2015 10:23"但小于"12/30/2014 06:14".

我知道我也可以在powershell和其他平台上做到这一点,但就像我之前说的那样,我不介意安装Python,实际上,在我的电脑上或者在我的网上运行PS脚本,但是我想让其他人保持原状,但有能力仍然这样做.CMD是每个人都拥有的,并且不需要进行任何安全性更改来运行批处理脚本.

MC *_* ND 5

set "source=c:\somewhere\file.xls"
set "target=c:\targets\file.csv"

xcopy /l /d /y "%source%" "%target%" | findstr /b /c:"1 " >nul && (
    echo "%target%" needs to be updated
)
Run Code Online (Sandbox Code Playgroud)

这用于xcopy仅获取/l将要复制的文件的list()(而不是真正复制它们),尝试将源文件复制到目标上,但仅限于目标文件需要更新时(/d).如果输出包含在行的开头1 file(或类似的,抱歉,我的Windows副本是西班牙语),那么源文件比目标更新.