Исправленно экранирование ковычек

This commit is contained in:
Alexey Barabanov
2025-11-05 17:23:24 +03:00
parent 2b5e4d76ce
commit f0ab797a83

View File

@@ -2,51 +2,40 @@
chcp 65001 >nul
setlocal enabledelayedexpansion
rem === Проверка аргументов ===
if "%~1"=="" (
echo ERROR: Укажите путь к XML-файлу.
echo Пример: replace.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 ERROR: Укажите новый базовый URL.
echo Пример: replace.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"
rem === Проверка существования файла ===
if not exist "%FILE%" (
echo ERROR: Файл не найден: %FILE%
if not exist "!FILE!" (
echo ERROR: File not found: !FILE!
exit /b 1
)
echo Обработка файла: %FILE%
echo Новый базовый URL: %NEWURL%
echo Processing: !FILE!
echo New URL: !NEWURL!
echo.
rem === Создание резервной копии ===
copy "%FILE%" "%FILE%.backup" >nul 2>&1
copy "!FILE!" "!FILE!.backup" >nul 2>&1
if !errorlevel! equ 0 (
echo Создана резервная копия: %FILE%.backup
echo Backup created: !FILE!.backup
) else (
echo Warning: Не удалось создать резервную копию
echo WARNING: Backup failed
)
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: Замена завершена'"
powershell -Command "$content = [System.IO.File]::ReadAllText('%FILE%'); $content = $content -replace 'http[s]?://[^\s\<\"]+', '%NEWURL%'; [System.IO.File]::WriteAllText('%FILE%', $content, [System.Text.Encoding]::UTF8); Write-Host 'SUCCESS: Replacement completed'"
if errorlevel 1 (
echo ERROR: Произошла ошибка при выполнении PowerShell
echo ERROR: PowerShell command failed
)
echo.