批处理脚本:移动文件夹并保留2个最新文件夹

时间:2014-04-02 14:35:23

标签: batch-file robocopy

我是脚本新手,我想问一些关于移动文件的问题。 我有d:\ tool目录,我想将文件夹从该目录移动到另一个网络驱动器。 我还想保留最新的2个文件夹,然后移动其他文件夹。

下面的脚本适用于移动ang保留文件,但只复制子目录。 例如在d:\ tool中,我有文件夹A,B,C。

文件夹A包含文件夹a1(创建日期:2013年4月5日)。
文件夹B包含文件夹b2(创建日期:2013年4月6日)..
文件夹C包含文件夹c3(创建日期:2013年4月7日)..

但是当我运行我的bat文件时,刚转移了a1文件夹。我希望它是A,其中包含a1。 (文件夹B和C得到保留)

net use m: /delete    
net use m: "\\test\mytools" test123 /USER:corp\testuser    
for /f "skip=2 eol=: delims=" %%F in ('dir /b  D:\tool') do robocopy  "%%F" "M:" /move /e    
net use m: /delete

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在for循环中使用此dir命令:

dir /ad /od /b

它仅包含目录
它按日期对列表进行排序,因此最早的文件夹是

然后此代码将提取两个顶级文件夹,它们可用作robocopy命令中的排除项:

net use m: /delete    
net use m: "\\test\mytools" test123 /USER:corp\testuser
set "a1="
set "a2="
for /f "delims=" %%F in ('dir /ad /od /b "D:\tool"') do (
    if defined a1 if not defined a2 set "a2=%%F"
    if not defined a1 set "a1=%%F"
)
robocopy  "D:\tool" "M:\" /move /e /xd "%a1%" /xd "%a2%"
net use m: /delete

确保备份了工具文件夹 - 并使用虚拟文件和文件夹进行测试。