如何将多个文件夹复制到目录名称为当前年份和月份的新目录中?

时间:2018-12-20 23:36:59

标签: batch-file xcopy

我有两个名为RoadsKerbs的文件夹。我想将两个文件夹(保留文件夹名称)复制到一个以当前年/月作为文件夹名称的备份文件夹中。

示例:备份文件夹名称将为201812,如果我打开它,则两个文件夹RoadsKerbs将位于其下。我想使用xcopy创建一个批处理文件来为我执行此功能。

当前代码仅打开一个名为01的文件夹,并且仅复制该文件夹的内容。我想要月/年,然后要在其下的两个文件夹及其内容。

@echo off
set curr_date=%DATE:~10,2%-%DATE:~7,2%
mkdir "C:\Roads_backup\%curr_date%"
xcopy "C:\Roads" "C:\Roads_backup\%curr_date%" /D/S/H/V/C/F/K

如何将两个文件夹复制到目录名称为当前年份和月份的新目录中?

1 个答案:

答案 0 :(得分:0)

CMD日期太可怕了

对于任何复杂程度的问题,我都避免使用%DATE%%TIME%而不希望自己发明轮子。在过去的10年中,PowerShell在每个Windows平台上都是标准配置(尽管版本不同),并且使用了功能全面的日期/时间库。

FOR /F "usebackq" %%d IN (`PowerShell -NoProfile -ExecutionPolicy Bypass -Command "Get-Date -UFormat '%%Y%%m'" ^<NUL`) DO SET "STAMP=%%~d"

这会将envvar STAMP设置为受-UFormat参数控制的格式化日期字符串。不管计算机的语言环境或语言是什么,都可以在PowerShell上运行(在Win7及更高版本上为standard)。

这有点罗word,但是您每次格式化格式时,也都可以轻松地复制/粘贴它,而不必重新计算精简%DATE%%TIME%中的值所需的所有字符串偏移量。当前日期。

您还可以对当前日期以外的日期执行相同的操作,并从当前日期中减去时间跨度以获取诸如“一周前”之类的信息-仅使用纯批处理/ CMD会使您非常痛苦。< / p>

复制目录

您可能要使用xcopy的/I(目标名称是dir)参数,并指定要使用的目标目录名称(否则,xcopy会将 contents Roads 中的>进入目标目录,而没有创建名为 Roads 的目录。

xcopy "C:\Roads" "C:\Roads_backup\%STAMP%\Roads" /I/D/S/H/V/C/F/K

我不确定是否总是要创建新目录,是否需要/D,因为这意味着“仅复制较新的文件”。

相关问题