我们有一个文件共享,其中包含一个目录,其中包含所有我们的构建版本版本,如此命名
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\
答案 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命令中设置的目录