首页 > 解决方案 > 批处理文件将较新的文件夹复制到其他位置

问题描述

我正在尝试编写一个批处理文件,它将最新的文件夹从一个位置复制到另一个位置。

在文件夹名称DIR1中,系统每天都在进行备份并在其中创建新文件夹(例如ABC backup 01_10_2019),其中包含 2 个文件。我在该地图 ( ) 中有 100 多个文件夹,DIR1因此我只需将最新的文件夹复制到另一个位置。

我需要脚本只复制最新的文件DIR1DIR2

到目前为止,我有这个,但它不起作用:

FOR /F "delims=|" %%I IN ('DIR "C:\DIR1" /B /AD /O:D') DO SET NewestFile=%%I
xcopy "C:\DIR1\%NewestFile%" "C:\DIR2" /E /H /K /Y
pause

用于复制文件夹的脚本效果很好,但我不能让脚本删除超过 3 天的文件,因为脚本正在将文件从 复制NAS1NAS2.

在脚本中:

for /F "delims=" %%i IN ('DIR "\\NAS1\" /B /AD /O-D') DO SET "Latest=%%~I" & goto :done
:done
robocopy "\\NAS01\%Latest%" "\\nas02\backup\%Latest%" /MIR
Rem till here crups works
Rem tried
forfiles -p "\\nas02\backup" -s -m *.* -D 3 -C "cmd /c del @path"
Rem error UNC paths are not supported.
Rem tried
forfiles -p "\\nas02\backup" -d -3 -c "cmd /c IF @isdir == TRUE rd /S /Q @path"
Rem error UNC paths are not supported
Rem Can anyone help me please
Pause

标签: batch-file

解决方案


首先将其设置为最新文件夹,设置变量并退出循环,然后使用它robocopy来完成工作。

for /F "delims=" %%i IN ('DIR "C:\DIR1" /B /AD /O-D') DO SET "Latest=%%~I" & goto :done
:done
robocopy "C:\DIR1\%Latest%" "C:\DIR2\%Latest%" /MIR
pause

推荐阅读