Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

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

Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Svetik2000
Дата: 26-01-2022
Изображения
Тип файла: png изображение_2022-01-26_170931.png
(6.9 Kb, 12 просмотров)
День добрый.
Уже не знаю что делать. Все испробовала и не могу найти ошибку.

есть скрипт 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
При его запуске вываливается ошибка (см картинку).

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

Отправлено: 17:10, 26-01-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


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"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 26-01-2022 в 20:10.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:50, 26-01-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Svetik2000:
В чем может быть дело? »
судя по скрину, у Вас проблема с кодировкой скрипта...
Сохраните в UTF8 with BOM и проверьте.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:44, 26-01-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:12, 26-01-2022 | #4


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Утро доброе.
Кодировка изначально 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, 27-01-2022 в 10:14.


Отправлено: 09:47, 27-01-2022 | #5


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все получилось!
Указала в конце Set-Content "$destination_file" -encoding utf8

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

Отправлено: 10:42, 27-01-2022 | #6


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png изображение_2022-01-27_104545.png
(15.5 Kb, 10 просмотров)
Тип файла: png изображение_2022-01-27_104636.png
(14.3 Kb, 10 просмотров)

Вот так выглядит выглядит в оригинале и после скрипта.
При том, что даже если убрать из массива замены Temperature - все равно там меняется
При этом, если убрать -encoding utf8, то этот лишний символ не появляется, но сплошные пробелы вместо замены.
Может есть еще какое то приложение для конвертации svg в png которое через cmd умеет работать???
Смотрю, онлайн конверторы такой же косяк выдают. и именно в тех же местах

Последний раз редактировалось Svetik2000, 27-01-2022 в 11:05.


Отправлено: 10:46, 27-01-2022 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


попробуйте: -Encoding UTF8BOM

Отправлено: 00:01, 28-01-2022 | #8


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg изображение_2022-01-28_092524.jpg
(40.2 Kb, 1 просмотров)

Цитата alpap:
попробуйте: -Encoding UTF8BOM »
Не удалось преобразовать значение "UTF8BOM" в тип "Microsoft.PowerShell..."

Отправлено: 09:25, 28-01-2022 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата Svetik2000:
добавляет лишние символы в определенные места. даже если там не делать замены »
Поставьте Powershell 7 и выполняйте скрипт из-под него.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:48, 28-01-2022 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Никак не могу понять где ошибка "отсутствует терминатор: '."

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - [решено] При запуске некоторых программ ошибка "Диск отсутствует" Winstonnn Хочу все знать 1 07-12-2011 20:04
Умирает видеокарта ? Никак не могу понять... Snaider Видеокарты 11 19-03-2011 23:03
EventID - Ошибка: "Диск отсутствует" при запуске программы xGIGx Хочу все знать 2 10-10-2008 11:01
Не могу понять "Nero" :(( Geo55 Хочу все знать 1 01-02-2004 15:24




 
Переход