将目录树复制到以当前日期命名的新目录



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

我已经看过这篇文章了,它很管用。

然而,它不包括任何子文件夹,我需要它做。

我还希望能够使用Windows任务调度程序每天运行此脚本。

由于%DATE%的问题,如Cyberclops对答案的评论中所述,这里有一个单行命令,可以从批处理文件或命令提示符运行,cmd.exe:

@PowerShell -NoP "XCopy "C:UsersDikSDocuments" "D:BackupsDikSDocs$(Get-Date -F yyyy-MM-dd)\" /S/Y">Nul 

在命令提示符中,您可以选择删除前导@


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

XCopy "C:UsersDikSDocuments" "D:BackupsDikSDocs$(Get-Date -F yyyy-MM-dd)" /S/Y >$Null

请记住根据需要调整源C:UsersDikSDocuments和目标D:BackupsDikSDocs

如何使用任务调度程序不在本网站的范围内,它是关于编程的,而不是使用操作系统GUI工具


编辑
如果您正在努力理解要替换的内容,这里有一个上层代码的批脚本版本,可以让您更轻松:

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

…以及作为powershell脚本的较低代码:

$SrcDir = "C:UsersDikSDocuments"
$DstDir = "D:BackupsDikSDocs"
XCopy "$SrcDir" "$DstDir$(Get-Date -F yyyy-MM-dd)" /S/Y >$Null

请注意,为了运行PowerShell脚本,您可能需要修改系统上的执行策略,默认设置为Restricted
您可以通过在PowerShell提示符中键入以下内容,以管理员身份运行:Get-ExecutionPolicy,如果返回Restricted,则可以键入Set-ExecutionPolicy RemoteSigned并接受提示

你可以试试这样的。。。

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

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

dir2copy表示要复制的目录。

%DATE%给出了今天的日期,但其中会有斜杠(/(字符,因此会创建不需要的子目录。

":/=-"命令告诉CMD.exe用短划线(-(代替日期中的所有斜杠(-(。

因为日期中有空格,所以你必须在它周围加引号。

末尾的反斜线(\(告诉xcopy目标是目录而不是文件。

如果你不想把这一天放在约会中,试试这个。。。

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

最新更新