我是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:RoboticsAAConfigFilesAutomation Anywhere FilesAutomation AnywhereMy Tasks' -recurse -Force}
这对文件夹进行了搜索,返回结果,然后将文件夹和内容复制到目标位置。
问题是,我实际上需要附加到目标路径的源路径。源是文件夹的可变数量。
有什么建议?
- 要将Get-Childitem限制在文件夹中,我插入了
-Directory
-
Copy-Item
接受管道中的输入,无需ForEach-Object
。 -
-replace
是基于正则义务的,需要路径中的后斜线S:
由另一个后斜线S:\
逃脱。
$DestBase = 'C:RoboticsAAConfigFilesAutomation Anywhere FilesAutomation AnywhereMy 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
参数。