【问题标题】:Batch script to copy a file from one network share to another based on lastmodified or creation date根据 lastmodified 或创建日期将文件从一个网络共享复制到另一个网络共享的批处理脚本
【发布时间】:2017-12-21 19:28:38
【问题描述】:

我有两个网络共享驱动器:我们称它们为:DriveADriveB

DriveA 每天都会生成两个文件,我想将最新的文件复制到 DriveB/Folder1/fileADriveB /Folder2/fileB 每天。

谁能提供我可以根据创建日期复制文件的解决方案:

  1. 将文件 A(创建日期:7 月 17 日)复制到 DriveB/Folder1
  2. 将文件 B(创建日期:7 月 17 日)复制到 DriveB/Folder2

我确实想出了一个解决方案,但是它会根据“今天的日期”复制文件。

SET usernameID=useremail@domain.com SET usernameDOMAIN=11111111 SET password=pwd@1234 net use "\\111.444.222.777\FOLDER" /USER:%usernameID% %password% /persistent:no set source=\\222.111.333.444\FOLDER\FOLDER2\Report_ net use "\\DOMAIN\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH" /user:usermail@domain.com pwd@1234 /persistent:no set dest=\\code1\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH\Input\Report\Report_ for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x set today=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2% echo %today% :copy copy "%source%%today%0700.csv" "%dest%%today%0700.csv" IF ERRORLEVEL 0 goto disconnect goto end pause :disconnect goto end pause :end pause

编辑 1:

现在我使用以下命令复制日期为 2017 年 7 月 16 日的文件: xcopy C:\Users\Desktop\report\ActualHRC_*.csv C:\Users\Downloads /D:07-16-2017 pause

如何动态提供/D:m-d-y?我的意思是,变量应该从系统中获取mdy

提前致谢!

【问题讨论】:

    标签: windows batch-file scripting


    【解决方案1】:

    我认为你把事情弄得太复杂了。有一个非常简单的解决方案:xcopy /Y/D

    如果您只输入xcopy /?,您可以看到所有选项。对于/D 选项,它说:

    复制在指定日期或之后更改的文件。 如果没有给出日期,则只复制那些 源时间比目标时间新。

    还有robocopy,它也内置在 Windows 中,提供更多选项,据称能够使用 UNC 路径名从网络共享复制到网络共享。 (因此,不需要驱动器映射。)

    【讨论】:

    • 感谢您的快速回复,我马上试一下
    • 我的源文件包含如下命名的文件:fileA_201707170070.txt、fileB_201707170070.txt。但是在这里它变得更加复杂,文件名中的时间戳有时会发生变化,它会增加一两个小时。如何面对这种复杂性?
    • 最好安排事情,这样您就不必处理这种复杂性。文件已经具有创建/修改日期属性,因此在文件名中复制此信息仅对避免文件名冲突有用;它不应该被依赖于其他任何事情。 xcopy 的/D 参数将复制目标中不存在的任何文件,或者,如果它们存在,则仅当它们的日期较新时才会复制它们。如果要从目标中删除旧文件,则需要保存上次删除的日期并在 /D:m-d-y 中使用。
    • 您好@Mike Nakis,您能查看我的编辑 1 吗?
    • 你必须动态提供 m-d-y 吗?如果省略它们,则如果源文件比目标文件新,或者目标文件不存在,则将进行复制。
    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多