Как удалить ТОЛЬКО одинаковые файлы и папки - PullRequest
0 голосов
/ 21 декабря 2018

Я хотел обновить приложение.Чтобы сделать это, я хочу проверить, существуют ли файлы И папки из $ path_new в $ path_old.Если это так, удалите их из $ path_old и скопируйте их из $ path_new, если нет, сохраните их в $ path_old.Итак, я сохраню все, кроме обновленных файлов.

Редактировать: Использование PowerShell.Редактировать: Поэтому, если пользователь добавил личную папку в папку приложения mmain, он сохранит ее.

Может быть, я буду выглядеть так:

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

Но это не совсем то, чтоя хочу.Я думаю, что мне придется добавить цикл "for", но как, где?

1 Ответ

0 голосов
/ 21 декабря 2018

Это скопирует файлы из исходного каталога в целевой каталог.«Личные файлы», или файлы, которых нет в исходном каталоге, будут игнорироваться, в то время как файлы, существующие в обеих папках, будут перезаписаны.

В дополнение к этому, я хотел бы отметить, что ваш подход к этомупроблема в неэффективно так сказать.Намного больше работы по поиску файлов, существующих в обоих каталогах, их удалению и последующему копированию из нового каталога в старый.Вместо этого вам следует просто использовать существующие действия по копированию файлов, например Copy-Item, поскольку они имеют встроенную функциональность для перезаписи существующих файлов.

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

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

Параметры

-Recurse Рекурсивное копирование всех файлов и папок.

-Force Копирование элементов, которые нельзя изменить каким-либо другим способом, например, копирование файла или псевдонима только для чтения.

-Container Это сохранитструктура папок при выполнении действий рекурсивного копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...