37 lines
1.2 KiB
Batchfile
37 lines
1.2 KiB
Batchfile
@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
|