如何将目录名称中包含当前年份和月份的多个文件夹复制到新目录?
How to copy several folders to new directory with current year and month in directory name?
我有两个文件夹 Roads
和 Kerbs
。我想将这两个文件夹(保留文件夹名称)复制到一个备份文件夹中,并将当前 year/month 作为文件夹名称。
示例:备份文件夹名称将为 201812
,如果我打开它,两个文件夹 Roads
和 Kerbs
将位于其下方。我想用 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."
我有两个文件夹 Roads
和 Kerbs
。我想将这两个文件夹(保留文件夹名称)复制到一个备份文件夹中,并将当前 year/month 作为文件夹名称。
示例:备份文件夹名称将为 201812
,如果我打开它,两个文件夹 Roads
和 Kerbs
将位于其下方。我想用 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."