param ( [string]$destinationFolder = "../savegame4", [string]$branch = "master" # Параметр для ветки, по умолчанию 'master' ) # Получаем путь к текущей папке (папка скрипта) $scriptFolder = Split-Path $MyInvocation.MyCommand.Path -Parent # Убедимся, что папка назначения существует, если нет — создаем её if (-not (Test-Path -Path $destinationFolder)) { New-Item -Path $destinationFolder -ItemType Directory } # Переходим в папку скрипта (если это репозиторий Git) Set-Location -Path $scriptFolder # Получаем текущую ветку $currentBranch = git rev-parse --abbrev-ref HEAD # Пуллим изменения только если мы не на нужной ветке if ($currentBranch -ne $branch) { Write-Host "Переключение на ветку '$branch'..." git checkout $branch } # Пуллим последние изменения из удаленного репозитория для указанной ветки Write-Host "Пуллинг изменений из ветки '$branch'..." git pull origin $branch # Получаем все файлы и папки в текущей папке, исключая .git, downloadSaves.ps1 и uploadSaves.ps1 $filesToCopy = Get-ChildItem -Path $scriptFolder -Recurse | Where-Object { $_.FullName -notmatch '\\\.git' -and $_.Name -ne 'downloadSaves.ps1' -and $_.Name -ne 'uploadSaves.ps1' } # Копируем файлы в папку назначения foreach ($file in $filesToCopy) { # Если это папка, создаем такую же структуру в папке назначения if ($file.PSIsContainer) { $destinationPath = $file.FullName.Replace($scriptFolder, $destinationFolder) if (-not (Test-Path -Path $destinationPath)) { New-Item -Path $destinationPath -ItemType Directory } } else { # Если это файл, копируем в папку назначения $destinationFile = $file.FullName.Replace($scriptFolder, $destinationFolder) Copy-Item -Path $file.FullName -Destination $destinationFile } } Write-Host "Копирование завершено."