![](/img/trans.png)
[英]PowerShell Copy All Files in Folders and Sub=Folders Not older than 300 minutes
[英]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.