PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Ответить
 • Просмотры: 1
Аватара пользователя
Svetik2000

PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

День добрый.

Уже не знаю что делать. Все испробовала и не могу найти ошибку.



есть скрипт powershell в кодировке UTF-8



Код:

Код: Выделить всё

$original_file = 'D:\www\site\img\weather\tmp\weather_original.svg'
$destination_file =  'D:\www\site\img\weather\tmp\weather.svg'
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'Temperature', 'Температура'`
   -replace 'Jan', 'Янв'`
   -replace 'Wind', 'Ветер'
} | Set-Content $destination_file

При его запуске вываливается ошибка (см картинку).



В чем может быть дело?
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
Svetik2000

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

Без ошибок, но вместо букв...
Вложения
Вложение изображение_2022-01-28_101516.png больше недоступно
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
YuS_2

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение YuS_2 »

Цитата Svetik2000:



В чем может быть дело?
PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."




судя по скрину, у Вас проблема с кодировкой скрипта...

Сохраните в UTF8 with BOM и проверьте.
Аватара пользователя
DJ Mogarych

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение DJ Mogarych »

foreach тут вообще не нужен.

Код:

Код: Выделить всё

$original_file = 'D:\www\site\img\weather\tmp\weather_original.svg'
$destination_file =  'D:\www\site\img\weather\tmp\weather.svg'
(Get-Content "$original_file") `
-replace 'Temperature', 'Температура' `
-replace 'Jan', 'Янв' `
-replace 'Wind', 'Ветер' |
Set-Content "$destination_file"
Аватара пользователя
DJ Mogarych

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение DJ Mogarych »

Можно открыть Powershell ISE, вставить туда текст скрипта и сохранить.

Скрипты PS, по-моему, все в кодировке 1251.
Аватара пользователя
Svetik2000

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

Утро доброе.

Кодировка изначально UTF-8

При 1251 скрипт отрабатывает без ошибок. Но вот дальше...

Приложение inkscape не конвертирует данный текст из svg в png. Просто пробелы показывает вместо текста.



В другом скрипте с кодировкой UTF-8, которая без массива для замены, а меняется только одна строчка, все отрабатывает без проблем, и замена, и дальнейшая конвертация в png



Вот его код:



Код:

Код: Выделить всё

$FILE = Get-Content -Path 'D:\www\sites\img\weather\tmp\weather.svg'
$NEWFILE = $FILE -replace 'Weather forecast for ****', 'Прогноз погоды в ***** на ближайшие 48 часов'
$NEWFILE | Set-Content -Path 'D:\www\sites\img\weather\tmp\weather.svg'

Выяснила, что рабочий скрипт (который одну строку заменяет) сохраняет svg в UTF-8.

Скрипт который с массивом, в UTF-8 выпадает с ошибкой. В 1251 отрабатывает без ошибок, но и svg сохраняет в 1251, а нужно получается в UTF-8.

Как бы указать кодировку при сохранение?
Аватара пользователя
Svetik2000

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

Все получилось!

Указала в конце Set-Content "$destination_file" -encoding utf8



Но вылез другой косяк... добавляет лишние символы в определенные места. даже если там не делать замены :-(

Чудеса какие то...

То есть в картинке у температуры добавляется буква В
Аватара пользователя
Svetik2000

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

Вот так выглядит выглядит в оригинале и после скрипта.

При том, что даже если убрать из массива замены Temperature - все равно там меняется

При этом, если убрать -encoding utf8, то этот лишний символ не появляется, но сплошные пробелы вместо замены.

Может есть еще какое то приложение для конвертации svg в png которое через cmd умеет работать???

Смотрю, онлайн конверторы такой же косяк выдают. и именно в тех же местах
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
Svetik2000

Re: PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Сообщение Svetik2000 »

Цитата Svetik2000:



добавляет лишние символы в определенные места. даже если там не делать замены
PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."




Поставьте Powershell 7 и выполняйте скрипт из-под него.
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Ответить

Вернуться в «Скриптовые языки администрирования Windows»