我想制作一个脚本,该脚本在打开时复制文件夹并将其保存到以日期命名的文件夹中。
我已经看过this post并且有效。
但是,它不包含我需要执行的任何子文件夹。
我还希望能够每天使用Windows Task Scheduler运行此脚本。
答案 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%\"