batch-file - 批处理文件将较新的文件夹复制到其他位置
问题描述
我正在尝试编写一个批处理文件,它将最新的文件夹从一个位置复制到另一个位置。
在文件夹名称DIR1
中,系统每天都在进行备份并在其中创建新文件夹(例如ABC backup 01_10_2019
),其中包含 2 个文件。我在该地图 ( ) 中有 100 多个文件夹,DIR1
因此我只需将最新的文件夹复制到另一个位置。
我需要脚本只复制最新的文件DIR1
夹DIR2
到目前为止,我有这个,但它不起作用:
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 天的文件,因为脚本正在将文件从 复制NAS1
到NAS2
.
在脚本中:
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
解决方案
首先将其设置为最新文件夹,设置变量并退出循环,然后使用它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
推荐阅读
- filter - 清晰度数据网格自定义过滤器问题:错误类型错误:无法读取 FiltersProvider.add 处未定义的属性“订阅”(
- laravel - Eloquent 连接和求和
- java - 关于java中的单例模式,为什么不直接使用静态变量而不是在方法中将静态变量分配给新的局部变量?
- css - 高度不显示的CSS flexbox
- node.js - 错误:在循环多个请求中发送标头后无法设置标头
- spring - 测试使用 Spring 5 WebClient 的类
- minikube - minikube - 如何知道正在使用的 minikube VM 的名称?
- c# - 在 c# 中正确使用矩阵 double[,]
- php - 如何从登录用户的数据库中提取数据?
- android - BLE MI Band 2 解析活动数据