将目录树复制到以今天的日期命名的新目录

时间:2018-08-04 22:07:48

标签: batch-file copy scheduled-tasks

我想制作一个脚本,该脚本在打开时复制文件夹并将其保存到以日期命名的文件夹中。

我已经看过this post并且有效。

但是,它不包含我需要执行的任何子文件夹。

我还希望能够每天使用Windows Task Scheduler运行此脚本。

2 个答案:

答案 0 :(得分:1)

由于%DATE%的问题,如Cyberclops的答案注释中所述,这是单行命令,可以从批处理文件或命令提示符{{1}中运行}:

cmd.exe

在命令提示符下,您可以选择删除开头的@PowerShell -NoP "XCopy \"C:\Users\DikS\Documents\" \"D:\Backups\DikS\Docs\$(Get-Date -F yyyy-MM-dd)\\\" /S/Y">Nul


您显然也可以从Powershell提示符或脚本中运行它:

@

请记住要根据需要调整来源XCopy "C:\Users\DikS\Documents" "D:\Backups\DikS\Docs\$(Get-Date -F yyyy-MM-dd)\" /S/Y >$Null 和目的地C:\Users\DikS\Documents

如何使用任务计划程序不在本网站的讨论范围之内,这与编程(而不是使用OS GUI工具)有关。


编辑
如果您在理解要替换的内容时遇到了麻烦,请使用以下脚本代码的上部代码来简化操作:

D:\Backups\DikS\Docs

…以及下面的代码作为powershell脚本:

@Echo Off
Set "SrcDir=C:\Users\DikS\Documents"
Set "DstDir=D:\Backups\DikS\Docs"
PowerShell -NoP "XCopy \"%SrcDir%\" \"%DstDir%\$(Get-Date -F yyyy-MM-dd)\\\" /S/Y">Nul

请注意,要运行$SrcDir = "C:\Users\DikS\Documents" $DstDir = "D:\Backups\DikS\Docs" XCopy "$SrcDir" "$DstDir\$(Get-Date -F yyyy-MM-dd)\" /S/Y >$Null 脚本,您可能需要修改系统上的执行策略,默认设置为PowerShell
您可以执行此操作通过在PowerShell提示符(以管理员身份运行)中键入以下内容:Restricted,如果返回Get-ExecutionPolicy,则可以键入Restricted并接受提示。

答案 1 :(得分:0)

您可以尝试这样的事情...

xcopy /s dir2copy "%DATE:/=-%\"

“ xcopy / s”表示要复制目录和所有子目录的内容。

dir2copy指示要复制的目录。

%DATE%给出了今天的日期,但是它将带有斜杠(/)字符,因此它将创建不需要的子目录。

“:/ =-”告诉CMD.exe用破折号(-)替换日期中的所有斜杠(-)。

由于日期中的空格,您必须将引号引起来。

最后的反斜杠(\)告诉xcopy目标是目录而不是文件。

如果您不希望在日期中使用Day,请改用此方法...

xcopy /s dir2copy "%DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4%\"