我想更新一个应用程序。 为此,我想测试$ 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”循环,但是如何,在哪里?
答案 0 :(得分:2)
这会将文件从源目录复制到目标目录。当覆盖两个文件夹中的文件时,“个人文件”或源目录中不存在的文件将被忽略。
除此之外,我想指出的是,您解决此问题的方法效率低。搜索两个目录中都存在的文件,删除它们,然后将其从新目录复制到旧目录,需要做很多工作。相反,您应该只使用现有文件复制操作(例如Copy-Item
),因为它们具有内置功能来覆盖现有文件。
$target = ".\old"
$source = ".\new"
Get-ChildItem -Path $source | Copy-Item -Destination $target -Recurse -Force -Container
参数
-Recurse
递归复制所有文件和文件夹。
-Force
复制其他无法更改的项目,例如通过只读文件或别名进行复制。
-Container
在执行递归复制操作时将保留文件夹结构。