我有两个名为Roads
和Kerbs
的文件夹。我想将两个文件夹(保留文件夹名称)复制到一个以当前年/月作为文件夹名称的备份文件夹中。
示例:备份文件夹名称将为201812
,如果我打开它,则两个文件夹Roads
和Kerbs
将位于其下。我想使用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
如何将两个文件夹复制到目录名称为当前年份和月份的新目录中?
答案 0 :(得分:0)
对于任何复杂程度的问题,我都避免使用%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
,因为这意味着“仅复制较新的文件”。