簡體   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