批处理脚本将具有特定日期和格式的文件从一个位置复制到另一个位置a

时间:2017-07-16 11:49:46

标签: windows batch-file

我需要将源路径中具有超过365天的文件和特定格式(.docx,.xlsx和.txt)的所有文件夹复制到另一个位置。 我需要复制整个文件夹而不仅仅是文件。 由于这是我第一次使用Windows批处理脚本,因此我只能编写一个命令来回显一个特定格式的文件路径,并且超过365天,如下所示:

forfiles /p "C:\Users\PRATIK\Documents\Test" /s /m *.txt* /D -365 /C "cmd /c echo @path"

但我不知道如何复制包含这些文件的文件夹,也不知道如何复制多种格式的文件。

如果有人能就此指导我,我将非常感激。

p.s:我发现上面的脚本只在Stack溢出.Hence想在这里也会找到更多细节。

2 个答案:

答案 0 :(得分:2)

我建议使用robocopy,默认情况下包含在Windows中,它提供了很多选择标准,如文件名模式,年龄,大小,... 像这样使用它:

robocopy source_root dest_root *.pdf *.txt /minage:365 /S /L

这将复制文件*.pdf或其子文件夹(*.txt)中source_root/S的文件,这些文件超过365天(minage) 。有了额外的选项,您可以照顾夏令时。目标文件夹(dest_root)不必提前存在。

删除/L一旦确定它按预期工作 - /L将只列出本应复制的文件和文件夹,但会阻止复制过程本身。
修改
源或目标文件夹也可以是UNC路径,即" \\ server \ share \ path"。
例如,请参阅https://static.spiceworks.com/attachments/post/0016/6764/robocopy.pdf以供参考。

答案 1 :(得分:1)

方法1:

如果要在保留其内容权限的同时将文件夹的所有内容复制到另一个文件夹,则可以执行此命令。

xcopy C:\Location1 C:\Location2 /O /X /E /H /K /C

如果您要复制特定日期或之后(或更早)的文件,

可以使用

/D:m-d-y

切换以指定日期。

方法2:

如果您想按照自己已创建的方式进行操作,可以试试这个:

@echo off
for /f "delims=" %%i in ('forfiles /p "C:\Location1" /s /D -365 /C "cmd /c echo @path"') do (
set file=%%i
copy "%file%" "C:\Location2"
)
pause