批处理文件,根据日期将文件夹的所有内容复制到另一个文件夹

时间:2015-08-04 05:51:40

标签: batch-file directory xcopy

我在C:\ ABC位置有多个自动生成的文件夹。每个自动生成的文件夹都是在一天开始时创建的,命名约定是" HS"。

例如:

 - C:\ABC\HS08042015
 - C:\ABC\HS08032015
 - C:\ABC\HS08022015
 - C:\ABC\HS08012015

因此,如果今天的日期是08042015,那么我希望批处理文件将前一天的文件夹(HS08032015)复制到新位置。因此,在08042015上,需要将文件夹C:\ ABC \ HS08032015复制到另一个位置D:\ Reports \ HS08032015

因此,此批处理文件应始终将前一天的日期文件夹复制到新位置。

我在考虑使用XCOPY,但实际上无法编写正常的代码。

非常感谢任何帮助。非常感谢。

2 个答案:

答案 0 :(得分:0)

告诉我你的日期显示是否与你想要的不同。

@echo off

set m=%date:~-7,2%
set today_date=%date:~-10,2%%m%%date:~-4,4%
set /a m -= 1
set yesterday_date=%date:~-10,2%0%m%%date:~-4,4%

echo Folder to copy: HS%today_date%
echo Folder copied: HS%yesterday_date%
echo d | xcopy C:\ABC\HS%today_date% D:\Reports\HS%yesterday_date% /e /y >nul
pause >nul

答案 1 :(得分:0)

这使用脚本以您需要的格式获取昨天的日期 然后使用Robocopy复制整个文件夹树。

@echo off
:: date yesterday or any number
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%mm%%dd%%yyyy%"

robocopy "C:\ABC\HS%data%" "D:\Reports\HS%data%" /mir
pause