批处理:仅复制比日期和时间更新的文件

时间:2016-08-18 08:33:37

标签: date datetime batch-file copy

我需要一个脚本,将比指定时间(从文件中读取)更新的文件从目录和子文件夹复制到镜像文件夹结构(需要创建)。但是,这需要考虑日期和时间,而不仅仅是日期。

我似乎找不到使用批处理/ robocopy或其他方法来实现此目的的方法。任何建议都会受到赞赏,理想情况下不使用powershell(我意识到它可能会这样做,但我从来没有使用它,现在学习曲线看起来有点陡峭。)

我可以调整文件中保存的日期/时间以适应任何格式。

所以,说日期时间是2016-08-17-18-00-00,那么

Org\A\1.txt     (2016-08-17-18-01-00) > Target\A\1.txt
Org\A\2.txt     (2016-08-17-17-00-00) > (not copied, as too old)
Org\B\C\D\3.txt (2016-08-18-09-00-00) > Target\B\C\D\3.txt

我可能需要使用forfiles循环,但不确定如何考虑时间和日期。

1 个答案:

答案 0 :(得分:0)

@echo off
setlocal enabledelayedexpansion
set compare=201608171800

for /r %%F in (*) do (
  set file=%%~fF
  for /f "tokens=2 delims=.=" %%I in ('wmic datafile where name^="!file:\=\\!" get lastmodified /format:list') do (
   if "%%I" geq "%compare%" for /f "tokens=2,* delims=\" %%A in ("%%~fF") do echo %%~fF -- N:\target\%%B
  )
)

您可能需要根据您的需要调整tokens=2,*中的“2”。

注意:这很慢,因为wmic
由于字符串比较,这适用于%compare%格式YYYYMMDDhhmmssYYYYMMDDhhmm甚至YYYY