首页 > 解决方案 > 我们可以比较两个有日期的文件并找到较新的日期吗

问题描述

我有2纯文本文件,一个在本地 PC 上,另一个在服务器上。(文件只存储发布日期,例如02/02/2018

我想编写一个 来检查服务器上的文本文件是否比用户机器上的日期新,并基于此从服务器下载新文件。

我使用过并且工作正常,但问题是要维护更新的文件集。

请告知这是否可以实现。

标签: windowsbatch-filefc

解决方案


您的样品日期不明确。

要比较日期(不转换为日期时间类型或序列号),您需要按 yyyy,MM,dd 排序。

你的02/02/2018本意是MM/dd/yyyy什么?或者dd/MM/yyyy

:: Q:\Test\2019\05\02\SO_55934933.cmd
@Echo off
Call :GetDate Srv "\\server\share\folder\file.txt"
Call :GetDate PC  "X:\folder\file.txt"

if not defined Srv (Echo couldn't obtain server date  &pause&Exit /b 1)
if not defined PC  (Echo couldn't obtain local PC date&pause&Exit /b 1)

if %Srv% geq %PC% (
    Echo Server date %Srv% newer or equal to PC date %PC%
) else (
    Echo Server date %Srv% older than PC date %PC%
)
Goto :Eof
:GetDate and reverse order
set /p "Dt="<%2
:: assuming dd/MM/yyyy
For /f "tokens=1-3delims=/" %%D in ("%DT%") Do Set "%1=%%F%%E%%D"
:: assuming dd/MM/yyyy
:: For /f "tokens=1-3delims=/" %%D in ("%DT%") Do Set "%1=%%F%%D%%E"

该批次包含两个变体,MM/dd/yyyy已被注释掉。

样本输出:

> Q:\Test\2019\05\02\SO_55934933.cmd
Server date 20180203 newer or equal to PC date 20180202

推荐阅读