【问题标题】:Using PowerShell v5, search for specific folder(s) copy those folders/files, AND the paths to another drive使用 PowerShell v5,搜索特定文件夹,复制这些文件夹/文件,以及到另一个驱动器的路径
【发布时间】:2017-11-28 17:31:05
【问题描述】:

我是 PowerShell 新手。花了好几天的时间试图得到这个,我认为我已经很接近了,但需要一位专家向我展示最后一步。

使用 PowerShell v5,需要搜索与特定名称匹配的文件夹,然后复制这些文件夹及其文件,并将文件夹的路径复制到另一个驱动器。

现在编写脚本:

Get-ChildItem s:\ -Filter (Read-Host -Prompt "Enter") -Recurse -ErrorAction SilentlyContinue -Force | 
    Select-Object FullName | ForEach-Object {Copy-Item -Path $_.FullName -Destination 'C:\Robotics\AA\ConfigFiles\Automation Anywhere Files\Automation Anywhere\My Tasks\' -recurse -Force}

这会搜索文件夹,返回结果,然后将文件夹和内容复制到目标位置。

问题是,我实际上需要将源路径附加到目标路径。源是可变数量的文件夹深度。

有什么建议吗?

【问题讨论】:

  • 所以目标路径是找到的路径,其中S:\ 应该替换为C:\Robotics\AA\ConfigFiles\Automation Anywhere Files\Automation Anywhere\My Tasks\ ?有没有理由把它写成一个班轮?

标签: file powershell path copy directory


【解决方案1】:
  • 将 Get-ChildItem 限制为我插入的文件夹-Directory
  • Copy-Item 接受来自管道的输入,不需要 ForEach-Object
  • -replace 是基于 RegEx 的,需要路径中的反斜杠 S:\ 被另一个反斜杠 S:\\ 转义。

$DestBase = 'C:\Robotics\AA\ConfigFiles\Automation Anywhere Files\Automation Anywhere\My Tasks\'
$Search = Read-Host -Prompt "Enter folder:"
Get-ChildItem -Path S:\ -Filter $Search -Directory -Recurse -ErrorAction SilentlyContinue -Force | 
    Copy-Item -Destination {$($_.Fullname) -replace 'S:\\',"$DestBase"} -Recurse -Force -Whatif

如果输出看起来正常,请删除最后一行中的 -WhatIf 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多