chcp 65001
This commit is contained in:
53
replace.bat
53
replace.bat
@@ -1,15 +1,16 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
rem === Проверка аргументов ===
|
rem === Проверка аргументов ===
|
||||||
if "%~1"=="" (
|
if "%~1"=="" (
|
||||||
echo ❌ Укажите путь к XML-файлу.
|
echo ERROR: Укажите путь к XML-файлу.
|
||||||
echo Пример: replace_url.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru"
|
echo Пример: replace.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru"
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
if "%~2"=="" (
|
if "%~2"=="" (
|
||||||
echo ❌ Укажите новый базовый URL.
|
echo ERROR: Укажите новый базовый URL.
|
||||||
echo Пример: replace_url.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru"
|
echo Пример: replace.bat "C:\path\to\file.xml" "https://gfx.tvstart.ru"
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,43 +19,35 @@ set "NEWURL=%~2"
|
|||||||
|
|
||||||
rem === Проверка существования файла ===
|
rem === Проверка существования файла ===
|
||||||
if not exist "%FILE%" (
|
if not exist "%FILE%" (
|
||||||
echo ❌ Файл не найден: %FILE%
|
echo ERROR: Файл не найден: %FILE%
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
rem === Экранирование для PowerShell ===
|
echo Обработка файла: %FILE%
|
||||||
set "FILE_ESC=!FILE:'=''!"
|
echo Новый базовый URL: %NEWURL%
|
||||||
set "NEWURL_ESC=!NEWURL:'=''!"
|
|
||||||
|
|
||||||
echo 🔄 Обработка файла: %FILE%
|
|
||||||
echo 🔗 Новый базовый URL: %NEWURL%
|
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
rem === Создание резервной копии ===
|
rem === Создание резервной копии ===
|
||||||
copy "%FILE%" "%FILE%.backup" >nul 2>&1
|
copy "%FILE%" "%FILE%.backup" >nul 2>&1
|
||||||
if !errorlevel! equ 0 (
|
if !errorlevel! equ 0 (
|
||||||
echo 📂 Создана резервная копия: %FILE%.backup
|
echo Создана резервная копия: %FILE%.backup
|
||||||
) else (
|
) else (
|
||||||
echo ⚠️ Не удалось создать резервную копию
|
echo Warning: Не удалось создать резервную копию
|
||||||
)
|
)
|
||||||
|
|
||||||
powershell -NoLogo -NoProfile -Command ^
|
rem === Команда PowerShell с правильной кодировкой ===
|
||||||
try { ^
|
powershell -Command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; ``
|
||||||
$file = '%FILE_ESC%'; ^
|
`$file = '%FILE%'; ``
|
||||||
$newUrl = '%NEWURL_ESC%'; ^
|
`$newUrl = '%NEWURL%'; ``
|
||||||
$content = Get-Content -Raw -Path $file -ErrorAction Stop; ^
|
`$content = Get-Content -Raw -Path `$file; ``
|
||||||
# Более точное regex для URL в XML атрибутах
|
`$pattern = '(http[s]?://[^\s\<\"\>]+)'; ``
|
||||||
$pattern = '(?i)(?<==")(https?://\w{3,}\.\w+\.\w{2,}|http://\d+\.\d+\.\d+\.\d+:\d+)(/[^"<]*)?'; ^
|
`$content = `$content -replace `$pattern, `$newUrl; ``
|
||||||
$content = [regex]::Replace($content, $pattern, { ^
|
Set-Content -Path `$file -Value `$content -Encoding UTF8 -NoNewline; ``
|
||||||
param($match); ^
|
Write-Host 'SUCCESS: Замена завершена'"
|
||||||
if ($match.Groups[2].Success -and $match.Groups[2].Value) { "$newUrl$($match.Groups[2].Value)" } else { "$newUrl" } ^
|
|
||||||
}); ^
|
if errorlevel 1 (
|
||||||
Set-Content -Path $file -Value $content -Encoding UTF8 -NoNewline; ^
|
echo ERROR: Произошла ошибка при выполнении PowerShell
|
||||||
echo "✅ Замена завершена успешно."; ^
|
)
|
||||||
} catch { ^
|
|
||||||
echo "❌ Ошибка: $($_.Exception.Message)"; ^
|
|
||||||
exit 1; ^
|
|
||||||
}
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
pause
|
pause
|
||||||
Reference in New Issue
Block a user