批处理脚本,用于根据上次修改或创建日期将文件从一个网络共享复制到另一个网络共享

时间:2017-07-17 09:59:15

标签: windows batch-file scripting

我有两个网络共享驱动器:我们称之为: DriveA DriveB

每天有两个文件在 DriveA 生成,我想将最新文件复制到 DriveB / Folder1 / fileA DriveB / Folder2 / fileB 每天。

任何人都可以请我提供解决方案,我可以根据创建日期复制文件:

  1. 将fileA(创建日期:17July )复制到 DriveB / Folder1
  2. 将fileB(创建日期:17July )复制到 DriveB / Folder2
  3. 我确实提出了一个解决方案,但它会根据"今天的日期"来复制文件。

    #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,b; cin>>n>>b; int count = 1; int ans = n-b; while((n - count*b)>=0) { if(count*(n - count*b)>ans) ans = count*(n - count*b); count++; } cout<<ans<<endl; } return 0; }

    编辑1:

    现在我使用以下命令复制2017年7月16日的文件: 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

    如何动态提供xcopy C:\Users\Desktop\report\ActualHRC_*.csv C:\Users\Downloads /D:07-16-2017 pause?我的意思是,变量应该从系统中获取/D:m-d-ymd

    提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

  

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

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