From 2b5e4d76ceccdde0f0c206c920c45824194ce086 Mon Sep 17 00:00:00 2001 From: Alexey Barabanov Date: Wed, 5 Nov 2025 17:17:16 +0300 Subject: [PATCH] chcp 65001 --- replace.bat | 53 +++++++++++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/replace.bat b/replace.bat index 397cc5c..188db51 100644 --- a/replace.bat +++ b/replace.bat @@ -1,15 +1,16 @@ @echo off +chcp 65001 >nul setlocal enabledelayedexpansion rem === Проверка аргументов === if "%~1"=="" ( - echo ❌ Укажите путь к XML-файлу. - echo Пример: replace_url.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru" + echo ERROR: Укажите путь к XML-файлу. + echo Пример: replace.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru" exit /b 1 ) if "%~2"=="" ( - echo ❌ Укажите новый базовый URL. - echo Пример: replace_url.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru" + echo ERROR: Укажите новый базовый URL. + echo Пример: replace.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru" exit /b 1 ) @@ -18,43 +19,35 @@ set "NEWURL=%~2" rem === Проверка существования файла === if not exist "%FILE%" ( - echo ❌ Файл не найден: %FILE% + echo ERROR: Файл не найден: %FILE% exit /b 1 ) -rem === Экранирование для PowerShell === -set "FILE_ESC=!FILE:'=''!" -set "NEWURL_ESC=!NEWURL:'=''!" - -echo 🔄 Обработка файла: %FILE% -echo 🔗 Новый базовый URL: %NEWURL% +echo Обработка файла: %FILE% +echo Новый базовый URL: %NEWURL% echo. rem === Создание резервной копии === copy "%FILE%" "%FILE%.backup" >nul 2>&1 if !errorlevel! equ 0 ( - echo 📂 Создана резервная копия: %FILE%.backup + echo Создана резервная копия: %FILE%.backup ) else ( - echo ⚠️ Не удалось создать резервную копию + echo Warning: Не удалось создать резервную копию ) -powershell -NoLogo -NoProfile -Command ^ - try { ^ - $file = '%FILE_ESC%'; ^ - $newUrl = '%NEWURL_ESC%'; ^ - $content = Get-Content -Raw -Path $file -ErrorAction Stop; ^ - # Более точное regex для URL в XML атрибутах - $pattern = '(?i)(?<==")(https?://\w{3,}\.\w+\.\w{2,}|http://\d+\.\d+\.\d+\.\d+:\d+)(/[^"<]*)?'; ^ - $content = [regex]::Replace($content, $pattern, { ^ - param($match); ^ - if ($match.Groups[2].Success -and $match.Groups[2].Value) { "$newUrl$($match.Groups[2].Value)" } else { "$newUrl" } ^ - }); ^ - Set-Content -Path $file -Value $content -Encoding UTF8 -NoNewline; ^ - echo "✅ Замена завершена успешно."; ^ - } catch { ^ - echo "❌ Ошибка: $($_.Exception.Message)"; ^ - exit 1; ^ - } +rem === Команда PowerShell с правильной кодировкой === +powershell -Command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; `` + `$file = '%FILE%'; `` + `$newUrl = '%NEWURL%'; `` + `$content = Get-Content -Raw -Path `$file; `` + `$pattern = '(http[s]?://[^\s\<\"\>]+)'; `` + `$content = `$content -replace `$pattern, `$newUrl; `` + Set-Content -Path `$file -Value `$content -Encoding UTF8 -NoNewline; `` + Write-Host 'SUCCESS: Замена завершена'" + +if errorlevel 1 ( + echo ERROR: Произошла ошибка при выполнении PowerShell +) echo. pause \ No newline at end of file