如果复制目录的后续创建日期不是目标目录,则复制目录

时间:2014-07-03 13:53:47

标签: windows batch-file

我们有一个文件共享,其中包含一个目录,其中包含所有我们的构建版本版本,如此命名

WebApp_20140702.1第一个数字是日期第二个数字,即该日期的构建计数

然后将它们包含在以下目录中

\\server\share\product\

我需要从虚拟机中创建一个批处理文件,可以检查我的虚拟机上的目标位置即。 c:\product\通过比较文件名或日期来查看它是否具有来自网络共享的最新版本,然后复制新版本并在必要时删除旧版本。

到目前为止,我可以使用xcopy复制文件夹,但是关于我的dos /批处理文件知识的程度iv已经浏览了一段时间但是还没有能够看到我能用的任何东西

这是我到目前为止所拥有的,正如你所看到的,虽然我不知道如何在两个目录之间进行比较,如上所述。

xcopy "\\server\share\webapp" "c:\users\username\desktop\webapp" /E /K

我确实尝试在最后使用/D,只是从\\server\share\product\复制目录,但目标的日期比目标晚,但最终只复制了整个目录。

编辑:让我自己清楚

我需要知道我是否有最新的子目录,但无论我做什么,它总是从\\server\share\product\复制所有子目录

即。 \\server\share\WebApp目录将具有以下子目录

..\WebApp_20140628.1\
..\WebApp_20140628.2\
..\WebApp_20140703.1\

我的vm将有目录

c:\product\WebApp_20140628.2\

现在我需要能够进入文件共享,看看它有一个更新的子目录,我需要将该目录复制到我的虚拟机,然后从我的虚拟机中删除旧的,所以我会有

c:\product\WebApp_20140703.1\

1 个答案:

答案 0 :(得分:0)

好的,我最终找到了另一个想要做类似事情的问题,答案完全符合我的要求

问题可以在这里找到:How to get the most recent file using a batch script in windows

我不得不使用xcopy而不是上述问题的答案中使用的副本。这是我的解决方案,以防任何人需要类似的东西 (z是我在我的问题中谈到的网络共享的映射版本)

pushd "z:\WebApp\" for /f "tokens=*" %%a in ('dir/b /od') do set newest=%%a xcopy /e /k "%newest%" "c:\product\" popd

我不确定我是否真的需要popd命令,因为我相信它只会返回到pushd命令中设置的目录