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

How to copy several folders to new directory with current year and month in directory name?

我有两个文件夹 RoadsKerbs。我想将这两个文件夹(保留文件夹名称)复制到一个备份文件夹中,并将当前 year/month 作为文件夹名称。

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

当前代码只打开一个名为01的文件夹,并且只复制文件夹内容。我想要 month/year,然后是它下面的两个文件夹及其内容。

@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

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

CMD 在约会方面很糟糕

对于任何复杂的事情,我都会避免使用 %DATE%%TIME% 来支持不重新发明轮子。 PowerShell 在过去 10 年中发布的每个 Windows 平台上都是标准配置(尽管版本不同),并使用相当全功能的 date/time 库。

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

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

它有点罗嗦,但您也可以轻松地 copy/paste 它而不必每次都重新计算分割 %DATE%%TIME% 中的值所需的所有字符串偏移量你想格式化当前日期。

你也可以对当前日期以外的日期做同样的事情,以及从当前日期减去时间跨度得到类似 "a week ago" 的东西——用纯 [=47= 做这件事非常痛苦]一个人。

正在复制目录

您可能需要使用 xcopy 的 /I(目标名称是目录)参数并指定要使用的目标目录名称(否则,xcopy 会将 Roads 的内容 到目标目录,而不创建名为 Roads).

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

如果您总是要创建新的目录,我不确定您是否需要 /D,因为这意味着 "only copy newer files."