繁体   English   中英

使用Powershell将文件和文件夹复制到30分钟以前的存档文件夹

[英]use powershell to copy files and folders to archive folder older 30 minutes

我想将超过30分钟的文件从活动文件夹复制到存档文件夹,并使用Powershell保留文件夹结构。 到目前为止,我已经有了该命令,但是尽管它移动了文件和文件夹,但是它会将所有文件都放在目标的顶层。

get-childitem -Recurse -Path "c:\input folder" | where-object {$_.CreationTime -lt (get-date).AddMinutes(-90)} | copy-item -destination "E:\output archive"

因此,如果我的来源看起来像这样-

c:\\输入文件夹\\ sub1 \\ filea.txt

c:\\输入文件夹\\ sub2 \\ fileb.txt

c:\\输入文件夹\\ sub3 \\ filec.txt

当前看起来像这样,我的命令在目标位置,这是错误的,因为我希望它保留文件夹结构-

e:\\输出存档\\ sub1 \\

e:\\输出存档\\ sub2 \\

e:\\输出存档\\ sub3 \\

e:\\ output archive \\ filea.txt

e:\\ output archive \\ fileb.txt

e:\\ output archive \\ filec.txt

它看起来应该像这样-

c:\\输出存档\\ sub1 \\ filea.txt

c:\\输出存档\\ sub2 \\ fileb.txt

c:\\输出存档\\ sub3 \\ filec.txt

我的命令缺少什么?

复制文件时,需要保留相对于源文件夹的部分路径。 通常,复制语句不会执行此操作,而是将文件从任何(源)子文件夹复制到目标文件夹。

将每个复制项目的全名中的源文件夹部分替换为目标文件夹:

$src = 'C:\input folder'
$dst = 'E:\output archive'

$pattern = [regex]::Escape($src)

$refdate = (Get-Date).AddMinutes(-90)

Get-ChildItem -Recurse -Path $src |
  Where-Object { $_.CreationTime -lt $refdate } |
  Copy-Item -Destination { $_.FullName -replace "^$pattern", $dst }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM