Batch file 将目录树复制到名为今天日期的新目录

Batch file 将目录树复制到名为今天日期的新目录,batch-file,copy,scheduled-tasks,Batch File,Copy,Scheduled Tasks,我想制作一个脚本,在打开文件夹时复制文件夹,并将其保存到名为“日期”的文件夹中 我已经看过了,而且成功了 但是,它不包括我需要它执行的任何子文件夹 我还希望能够使用Windows任务调度器每天运行此脚本。您可以尝试以下内容 xcopy /s dir2copy "%DATE:/=-%\" xcopy/s要求复制目录和所有子目录的内容 dir2copy表示要复制的目录 %DATE%给出了今天的日期,但其中有斜杠/字符,因此会创建不需要的子目录 ://=-告诉CMD.exe用破折号替换日期中的所有斜

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

我已经看过了,而且成功了

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


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

您可以尝试以下内容

xcopy /s dir2copy "%DATE:/=-%\"
xcopy/s要求复制目录和所有子目录的内容

dir2copy表示要复制的目录

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

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

由于日期中有空格,所以必须在其周围加引号

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

如果你不想约会中的某一天,试试这个

xcopy /s dir2copy "%DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4%\"
由于%DATE%的问题,如对来自的答案的注释中所述,这里有一个单行命令,可以从批处理文件或命令提示符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和目标D:\Backups\DikS\Docs

如何使用任务调度器超出了本网站的范围,本网站的主题是编程,而不是使用OS GUI工具

edit如果您正在努力理解要替换什么,下面是上面代码的批处理脚本版本,以使您更轻松:

@回音 设置SrcDir=C:\Users\DikS\Documents 设置DstDir=D:\Backups\DikS\Docs PowerShell-NoP XCopy\%SrcDir%\\%DstDir%\$Get Date-F yyyy MM dd\\\\/S/Y>Nul …下面的代码作为powershell脚本:

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

要澄清,您的问题是“如何复制目录树”?请阅读以下命令的帮助,方法是键入它们的名称,后跟/?,然后使用适当的选项选择所需的命令XCopy和RoboCopy。您应该测试您的脚本,如果它无法按预期工作,请添加您的代码,并充分解释运行脚本时发生的情况。然后,您应该使用您喜爱的搜索引擎来学习如何使用任务调度器运行脚本。本网站不提供免费教程,我们帮助您修复代码。您如何知道日期中有斜杠或空格?%DATE%变量是User/PC/Locale可更改的,因此,任何使用该变量的脚本都只能在同一环境下安全地使用。@Compo good point。然而,无论格式是什么,如果其中是否包含斜杠和空格,我所介绍的内容仍然有效。我只是想解释我的演讲是如何运作的。@Cyberclops,不是!日期变量还可以将星期几作为前导元素。所以您还需要另一个set语句来删除它。@Squashman。。。最初的问题没有具体说明日期的格式。我当时只是尽我所能迅速地回答了问题。但是,我已经用另一个代码片段更新了我的答案,它从日期中删除了日期。。。而且它不需要我使用set语句来完成。请阅读此问题中使用WMIC和Powershell以独立于区域的格式获取日期和时间的答案:谢谢您的回复,但当我尝试使用它时,它生成了一个名为$Null的文件,当我打开它时,它说复制了0个文件,@Cyberclops的解决方案有效。但无论如何,谢谢你的帮助help@S.Dik,我提供的唯一一段包含字符串$Null的代码是我要求您从PowerShell运行的命令。我可以保证它不会写入名为$Null的文件,除非您未能按照答案中的说明替换源位置和目标位置。事实上,我刚刚打开了某人的Windows7单元,运行PowerShell 2.0,这两段代码的工作方式完全如图所示。请注意,双引号和斜杠很重要,您应该只替换我指示的文本字符串,除非您知道自己在做什么,否则不要触摸任何其他内容。另外@S.Dik,作为旁注,可以删除上面代码中的>Nul和下面代码中的>Null,t
嘿,只阻止输出到屏幕,因为Cyberclops的答案不会输出到Nul,所以无论如何,你显然不需要这个功能!若要重新迭代,您不得删除任何双引号或引入双引号,此部分还必须保留\$Get Date-F yyyy MM dd\。请提供您使用的确切代码,我们或许可以确定发生了什么。@S.Dik,我已经进一步扩展了上面的答案,提供了脚本版本,这将使您能够更简单地更新,而不会出错。我还提供了有关如何修改PowerShell脚本的执行策略的信息,因为默认情况下,如果不这样做,您将无法运行它们。