Войти

Показать полную графическую версию : Помогите экранировать кавычки.


alkogoliksasha
14-05-2022, 10:13
Доброго всем дня, прошу помощи, уже запутался, в скриптах я новичек.
Не могу заставить работать следующий кусок кода.
В переменных randomname1 и 2 хранится случайное имя картинки, так вот надо либо чтобы этот кусок выполнился через cmd /c либо создать и запустить батник, без разницы.
Но у меня почему то в батник не передаются значения переменных - а просто randomname1.jpg.
Я так подозреваю что не правильно экранирую аргументы.
Памагити.


##Создание батника для склейки картинок
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
'magick "$randomname1.jpg" "$randomname2.jpg" -set option:ww "%%[fx:max(u.w,v.w)]" -set option:hh "%%[fx:max(u.h,v.h)]" -resize "%%[ww]x%%[hh]" -background white -gravity center +append -quality 100 out.jpg' | Out-File "K:\Test\imagick\merge.bat" -append

Elven
14-05-2022, 12:27
1. Строка, заключенная в одинарные кавычки, является подробной строкой. Строка передается в команду точно так же, как она вводится. Подстановка не выполняется.
2. Даже если не одинарные кавычки, то .jpg в $randomname1.jpg будет вопспринято не как окончание имени переменной, и не как подстановка после вывода оной, а как параметр, в котором что-то вроде как может быть записано (это пошик, в нем почти все - объект, из которого можно надергать параметров).
3. выводить строку ради того чтобы передеать ее as is в out-file, конечно, можно, но зачем если есть add-content?

пробуй так, если я правильно понял суть желаемого:
$result = 'magick "' + $randomname1 + '.jpg" "' + $randomname2 + '.jpg" -set option:ww "%%[fx:max(u.w,v.w)]" -set option:hh "%%[fx:max(u.h,v.h)]" -resize "%%[ww]x%%[hh]" -background white -gravity center +append -quality 100 out.jpg'
Add-Content -path ./test.txt -Value $result

ну и да, совсем забыл

4. Зачем пошиком делать батник??? не верю что задача не решается целиком в пошике.

wasp14
14-05-2022, 20:51
наугад: попробуй ^ перед " :drug:
... а вообще , ССПП(согласен с пред.постером) - зачем из ПоШ делать батнег, и потом его выполнять?!
так-то даже очень понимаю ПОЧЕМУ ты это делаешь, потому что не знаешь ПоШ, а батнеги знаешь. Я сам так делал неск.лет с JS пока не упёрся. Надо-таки выучить JS чуток, ибо это ппц. полный, если дальше продолжать из JS заводить bat :lol: и кавычки это только одно что... там ещё & будут, когда со ссылками захочешь работать(а в бат это разделители команд).. жжжжжуть!

Так что да, сделать можно(попробуй ^ или экранирование), но лучше что-то одно пользовать.

alkogoliksasha
15-05-2022, 08:25
Большое спасибо, все заработало.




© OSzone.net 2001-2012