使用 Powershell 从多个文件夹复制特定子文件夹
Copy specific subfolder from multiple folders using Powershell
我正在尝试做一些日志备份并努力使用可以为我做这件事的 ps1 命令。
我有这样的文件夹结构:
folder_root/
├── sub_a/
│ ├── Logs
│ ├── bootstrap.min.css
│ ├── Configuration
├── sub_b/
│ ├── Logs
│ └── Settings
└── sub_c/
├── Logs
├── Application
├── class.js
└── other-file.html
而且我只需要从所有子目录中提取 Logs 文件夹并将其复制到备份文件夹(存在)中,以遵守现有文件夹结构:
Backup-03-24/
├── sub_a/
│ └── Logs
├── sub_b/
│ └── Logs
└── sub_c/
└── Logs
如何使用 Powershell 实现此目的?我正在尝试在路径中使用带通配符的 Copy-Item cmdlet,但它不起作用。
Copy-Item -Destination "C:\folder_root\*\Logs"
这太难了。只需循环使用 Get-ChildItem
获得的目录,使用筛选器筛选要复制的文件夹名称:
$sourcePath = 'D:\folder_root'
$Destination = 'D:\Backup-03-24'
Get-ChildItem -Path $sourcePath -Filter 'Logs' -Recurse -Directory |
ForEach-Object {
$targetPath = Join-Path -Path $Destination -ChildPath $_.Parent.FullName.Substring($sourcePath.Length)
$null = New-Item -Path $targetPath -ItemType Directory -Force
$_ | Copy-Item -Destination $targetPath -Recurse -Force
}
结果:
D:\BACKUP-03-24
+---sub_a
| \---Logs
+---sub_b
| \---Logs
\---sub_c
\---Logs
我正在尝试做一些日志备份并努力使用可以为我做这件事的 ps1 命令。
我有这样的文件夹结构:
folder_root/ ├── sub_a/ │ ├── Logs │ ├── bootstrap.min.css │ ├── Configuration ├── sub_b/ │ ├── Logs │ └── Settings └── sub_c/ ├── Logs ├── Application ├── class.js └── other-file.html
而且我只需要从所有子目录中提取 Logs 文件夹并将其复制到备份文件夹(存在)中,以遵守现有文件夹结构:
Backup-03-24/ ├── sub_a/ │ └── Logs ├── sub_b/ │ └── Logs └── sub_c/ └── Logs
如何使用 Powershell 实现此目的?我正在尝试在路径中使用带通配符的 Copy-Item cmdlet,但它不起作用。
Copy-Item -Destination "C:\folder_root\*\Logs"
这太难了。只需循环使用 Get-ChildItem
获得的目录,使用筛选器筛选要复制的文件夹名称:
$sourcePath = 'D:\folder_root'
$Destination = 'D:\Backup-03-24'
Get-ChildItem -Path $sourcePath -Filter 'Logs' -Recurse -Directory |
ForEach-Object {
$targetPath = Join-Path -Path $Destination -ChildPath $_.Parent.FullName.Substring($sourcePath.Length)
$null = New-Item -Path $targetPath -ItemType Directory -Force
$_ | Copy-Item -Destination $targetPath -Recurse -Force
}
结果:
D:\BACKUP-03-24
+---sub_a
| \---Logs
+---sub_b
| \---Logs
\---sub_c
\---Logs