Powershell 如何仅删除相同的文件&;文件夹

Powershell 如何仅删除相同的文件&;文件夹,powershell,Powershell,我想更新一个应用程序。 为此,我想测试$path\u new中的文件和文件夹是否存在于$path\u old中。如果是,请从$path_old中删除这些内容,并从$path_new中复制这些内容,如果不是,请将它们保留在$path_old中。 所以,除了更新的文件,我将保留所有内容 编辑:使用PowerShell。 编辑:因此,如果用户在app-mmain文件夹中添加了个人文件夹,他将保留该文件夹 也许我会像这样: $FileName = "C:\Share\test.txt" if (Test

我想更新一个应用程序。 为此,我想测试$path\u new中的文件和文件夹是否存在于$path\u old中。如果是,请从$path_old中删除这些内容,并从$path_new中复制这些内容,如果不是,请将它们保留在$path_old中。 所以,除了更新的文件,我将保留所有内容

编辑:使用PowerShell。 编辑:因此,如果用户在app-mmain文件夹中添加了个人文件夹,他将保留该文件夹

也许我会像这样:

$FileName = "C:\Share\test.txt"
if (Test-Path $FileName) 
{
  Remove-Item $FileName
}

但这并不是我想要的。我想我必须添加一个“for”循环,但是如何,在哪里?

这将把文件从源目录复制到目标目录“个人文件”或源目录中不存在的文件将被忽略,同时覆盖两个文件夹中存在的文件

除此之外,我想指出,你解决这个问题的方法可以说是低效的。搜索两个目录中存在的文件、删除这些文件,然后将它们从新目录复制到旧目录,这需要做更多的工作。相反,您应该只使用现有的文件复制操作,例如
复制项目
,因为它们具有覆盖现有文件的内置功能

$target = ".\old"
$source = ".\new"

Get-ChildItem -Path $source | Copy-Item -Destination $target -Recurse -Force -Container
参数

-递归
递归复制所有文件和文件夹

-强制
复制无法更改的项目,例如通过只读文件或别名进行复制


-Container
这将在执行递归复制操作时保留文件夹结构。

我知道了。但是“getchilditem”命令是否保留了该结构?据我所知,它将复制文件夹中的所有文件,它不会保留/Parent/Son/Kid等目录的结构,它将复制/Parent/*@xHypnosia下的所有内容。在你写评论时,我用附加信息编辑了我的答案。希望有帮助。太好了。非常感谢你。