Загрузка данных


# Устанавливаем кодировку для корректного отображения русских букв
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# --- АВТО-ОПРЕДЕЛЕНИЕ ПУТИ ---
# Эта строка находит папку, в которой лежит сам скрипт
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$sourceDir = Join-Path $scriptPath "Downloads_Bank_Docs"
$oldDocsDir = Join-Path $scriptPath "Old_Doc_Files"
$convertedDir = Join-Path $scriptPath "Converted_Docx_Files"

Write-Host "Рабочая директория: $scriptPath" -ForegroundColor Gray

# Создаем папки для сортировки, если их еще нет
if (!(Test-Path $oldDocsDir)) { New-Item -ItemType Directory -Path $oldDocsDir | Out-Null }
if (!(Test-Path $convertedDir)) { New-Item -ItemType Directory -Path $convertedDir | Out-Null }

Write-Host "`n--- 1. Ищу старые .doc файлы во всех папках (Batch) ---" -ForegroundColor Cyan

# Ищем файлы .doc рекурсивно (заходим в каждую подпапку Upload_Batch_X)
$docFiles = Get-ChildItem -Path $sourceDir -Recurse -File | Where-Object { $_.Extension -eq ".doc" }

if ($docFiles.Count -eq 0) {
    Write-Host "[!] Старых .doc файлов не обнаружено." -ForegroundColor Yellow
    Write-Host "Проверь, что папка 'Downloads_Bank_Docs' лежит там же, где этот скрипт." -ForegroundColor Gray
    Read-Host "Нажми Enter, чтобы выйти"
    exit
}

Write-Host "Найдено файлов: $($docFiles.Count). Начинаю перемещение и конвертацию..." -ForegroundColor Green

# Запускаем Word в фоновом режиме
try {
    $word = New-Object -ComObject Word.Application
    $word.Visible = $false
    $count = 0

    foreach ($file in $docFiles) {
        $count++
        Write-Host "[$count/$($docFiles.Count)] Обрабатываю: $($file.Name)" -ForegroundColor White
        
        # 1. Перемещаем оригинал в архив Old_Doc_Files
        $oldFilePath = Join-Path $oldDocsDir $file.Name
        Move-Item -Path $file.FullName -Destination $oldFilePath -Force

        # 2. Конвертируем в .docx
        $newFileName = $file.BaseName + ".docx"
        $newFilePath = Join-Path $convertedDir $newFileName

        $document = $word.Documents.Open($oldFilePath)
        # 16 — это код формата wdFormatXMLDocument (.docx)
        $document.SaveAs([ref]$newFilePath, [ref]16)
        $document.Close()
    }

    Write-Host "`n=== ВСЁ ГОТОВО! ===" -ForegroundColor Green
    Write-Host "1. Старые .doc убраны в: Old_Doc_Files"
    Write-Host "2. Новые .docx лежат в: Converted_Docx_Files" -ForegroundColor Cyan
    Write-Host "Теперь можешь закинуть новые .docx обратно в нужные батчи."

} catch {
    Write-Host "`n[!] Ошибка: $($_.Exception.Message)" -ForegroundColor Red
} finally {
    if ($word) {
        $word.Quit()
        [System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null
    }
}

Read-Host "`nНажми Enter, чтобы закрыть это окно"