@echo off setlocal rem === Проверка аргументов === if "%~1"=="" ( echo ❌ Укажите путь к XML-файлу. echo Пример: replace_url.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" exit /b 1 ) set "FILE=%~1" set "NEWURL=%~2" echo 🔄 Обработка файла: %FILE% echo 🔗 Новый базовый 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 echo ✅ Замена завершена. pause