很抱歉,如果这是一个非常简单的过程。
我有一个文件夹结构,在根级别(空)有~4,000个目录,另一个位置有另一组带有数据的文件夹。
我想只将location2文件夹中的文件复制到location1中的文件夹,即\ FolderABC123 \ Archive,但仅限于目录名称匹配。我确定Windows资源管理器副本,或xcopy或其他一些实用程序可以更轻松地完成它,但我想深入了解PowerShell,并认为这将是一个良好的开端?
谢谢你。 克里斯答案 0 :(得分:0)
您可以使用powershell
在开头设置路径。
$strSouce = "Path"
$strDestination = "Path"
然后在源中搜索foreach文件。
Foreach ($objFile in Get-ChildItem -Path $strSouce -Recurse | Where-Object -FilterScript {$_.PsIsCointainer -eq $false}) {]
将每个项目从源复制到目标。对于目的地,您必须将源路径替换为destiantion路径。
Copy-Item -Path $objFile.FullName -Destination $objFile.FullName.Replace("$strSouce", "$strDestination")
为了您的学习,请将代码段设置到正确的位置。
答案 1 :(得分:0)
# Fist, get a list of all target directories (i.e.: directories under $destination that have a match in $source)
$targetDirs = dir -Path $source -Recurse -Force |
?{ $_.psIsContainer } |
%{ $_.FullName -replace [regex]::Escape($source), $destination } |
%{ if (Test-Path $_) { $_ }}
# Then, enumerate all files from source and copy them only if the corresponding target dir exists
dir -Path $source -Recurse -Force |
?{ -not $_.psIsContainer } |
?{ Test-Path (Split-Path ($_.FullName -replace [regex]::Escape($source), $destination) -Parent) } |
copy -Force -Destination { $_.FullName -replace [regex]::Escape($source), $destination }