MedvedevDM
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Подскажите как реализовать, сабж здесь | Делать было нечего и написал тут скриптик как пример работы с файлами: Dest1 И Dest2 это корни папок, которые нужно сравнивать. Суть алгоритма. Берется рекурсивно все файлы из Папки1 и смотрится если такой файл в папке2. Если нету, то копируется, если есть, то проверятся есть ли модификации между файлами в Папке1 и папке2. Второй цикл проверяет папку2. Берет рекурсивно все файлы, потом смотрит, есть ли такой файл в папке1 , если нету, то удаляет из папки2. CLS #задаем локации $Dest1 = "D:\temp\Folder 1" $Dest2 = "D:\temp\Folder 2" #Проверяем папку 1 на присутствие файлов Write-Host "!!!!____!!!! Приступаем к проверке папки 1" ForEach ($File in (Get-ChildItem $Dest1 -Recurse)) { Write-host "Обрабатываю" $File.fullname $File.LastWriteTime #Задаем переменную с путем из второй папки. $Dest1ToDest2= $File.FullName.Replace($Dest1, $Dest2) #Проверяем существуюет ли файл во второй папке, который существует в папке 1 if ((Test-Path -path $Dest1ToDest2) -ne $True) { #Если файл не существует, то скопируем его из папки1 в папку2 Write-host "_______________Файла в Папке 2 не существует. Нужно скопировать из Папки 1" Copy-Item $File.FullName $Dest1ToDest2 -Force } Else { #Файл существует. Значит будем проверять даты. if ((Dir $File.FullName).LastWriteTime -gt (Dir $Dest1ToDest2).LastWriteTime) { #Файл существует, и в папке 1 изменения сделаны позже, чем в Папке 2 Write-Host "_______________Файл в папке 1 новее, чем в папке 2. Нужно скопировать" Copy-Item $File.FullName $Dest1ToDest2 -Force } Else { Write-Host "_______________Файлы одинаковые. Обновление не требуется" } } } Write-Host "!!!!____!!!! Приступаем к проверке папки 2" #Проверяем папку 1 на присутствие файлов ForEach ($File in (Get-ChildItem $Dest2 -Recurse)) { Write-host "Обрабатываю" $File.fullname $File.LastWriteTime #Получаем ссылку на аналогичный файл в Папке1 $Dest2ToDest1= $File.FullName.Replace($Dest2, $Dest1) #Проверяем существуюет ли файл в первой папке if ((Test-Path -path $Dest2ToDest1) -ne $True) { Write-Host "_______________Файл не существует в Папке1. Нужно удалить из папки 2" #Если файл не существует, то скопируем его из папки1 в папку2 Remove-Item $File.FullName -Force } else { Write-Host "_______________Файл существует в Папке1." } } |