微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Powershell 从多个文件夹复制特定子文件夹

如何解决使用 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?