diff --git a/replace.bat b/replace.bat
index 6937056..8f95f44 100644
--- a/replace.bat
+++ b/replace.bat
@@ -1,36 +1,42 @@
@echo off
-setlocal
+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: Specify file path
+ echo Example: 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: Specify new URL
+ echo Example: replace.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru"
exit /b 1
)
set "FILE=%~1"
set "NEWURL=%~2"
-echo 🔄 Обработка файла: %FILE%
-echo 🔗 Новый базовый URL: %NEWURL%
+if not exist "!FILE!" (
+ echo ERROR: File not found: !FILE!
+ exit /b 1
+)
+
+echo Processing: !FILE!
+echo New URL: !NEWURL!
echo.
-powershell -NoLogo -NoProfile -Command ^
- $file = '%FILE%'; ^
- $newUrl = '%NEWURL%'; ^
- $content = Get-Content -Raw $file; ^
- # шаблон: ищем http(s)://домен или IP:порт и сохраняем хвост, если есть
- $pattern = '(?s)(https?:\/\/\w{3,}\.\w+\.\w{2,}|http:\/\/\d+\.\d+\.\d+\.\d+:\d+)(\/[^\s<"]*)?'; ^
- # замена: если есть хвост — добавляем его обратно, иначе только базовый URL
- $content = [regex]::Replace($content, $pattern, {
- if ($matches[2]) { "$newUrl$($matches[2])" } else { "$newUrl" }
- }); ^
- Set-Content -Path $file -Value $content -Encoding UTF8
+copy "!FILE!" "!FILE!.backup" >nul 2>&1
+if !errorlevel! equ 0 (
+ echo Backup created: !FILE!.backup
+) else (
+ echo WARNING: Backup failed
+)
-echo ✅ Замена завершена.
-pause
+powershell -Command "$content = [System.IO.File]::ReadAllText('%FILE%'); $pattern = 'http[s]?://[^/<\"]+(/[^<\"]*)?'; $content = $content -replace $pattern, '%NEWURL%$1'; [System.IO.File]::WriteAllText('%FILE%', $content, [System.Text.Encoding]::UTF8); Write-Host 'SUCCESS: Replacement completed'"
+
+if errorlevel 1 (
+ echo ERROR: PowerShell command failed
+)
+
+echo.
+pause
\ No newline at end of file