以下是我期望下面代码的行为:
获取源目录中文件列表。
循环遍历每个文件,仅在备份目标不存在该文件时才复制。
if (!(Test-Path C:\Folder\Destination)) {
New-Item -ItemType Directory -Force -Path C:\Folder\Destination
}
$originalfiles = Get-ChildItem -Path "C:\Folder\Source"
$originalfiles
foreach ($file in $originalfiles) {
Write-Host
Write-Host File Name: -ForegroundColor DarkYellow
Write-Host $file.Name
Write-Host File Path: -ForegroundColor DarkYellow
Write-Host $file.FullName
$src = $file.FullName
$dest = "C:\Folder\Destination\$($file.Name)"
Copy-Item $src $dest
}
我本以为Copy-Item
cmdlet默认情况下不会覆盖,除非您指定-Force
标志。这是我过去遇到需要覆盖的情况时看到的行为。
此外,我认为可能是因为介绍了foreach
循环,但我尝试了单独使用带有硬编码路径的复制命令,结果还是一样的。
我应该重新启动IDE,还是我忽略了什么错误?
-Force
影响复制的(源)项目,而不是目标项目。您是在说这里-Force
适用于目标项目吗?如果是这样,我们可以提交一个拉取请求以更新该文档。 - TylerH