如何只删除相同的文件和文件夹

时间:2018-12-21 08:47:31

标签: powershell

我想更新一个应用程序。 为此,我想测试$ path_old中是否存在$ path_new中的文件和文件夹。如果是这样,请从$ path_old中删除它们,然后从$ path_new中复制它们,否则,将它们保留在$ path_old上。 因此,我将保留除更新文件以外的所有内容。

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

也许我看起来像这样:

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

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

1 个答案:

答案 0 :(得分:2)

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

除此之外,我想指出的是,您解决此问题的方法效率低。搜索两个目录中都存在的文件,删除它们,然后将其从新目录复制到旧目录,需要做很多工作。相反,您应该只使用现有文件复制操作(例如Copy-Item),因为它们具有内置功能来覆盖现有文件。

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

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

参数

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

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

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