Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Проблема с форматированием bat файла (http://forum.oszone.net/showthread.php?t=321841)

hp1nt0 18-12-2016 15:27 2696628

Проблема с форматированием bat файла
 
Здравствуйте, есть такой софт ImageMagick.
Позволяет из командной строки работать с графикой.
Я пока разбираю примеры приведённые в руководстве.
И есть несколько примеров где появилась мелкая но досадная помеха.
Исполняемый файл выглядит так:
Код:

.\bin\magick -size 520x100 xc:lightblue ^
                        -font georgia -pointsize 72 ^
                        -draw "fill black text 27,67 'Led Zeppelin' text 25,68 'Led Zeppelin' text 23,67 'Led Zeppelin' text 22,65 'Led Zeppelin' text 23,63 'Led Zeppelin' text 25,62 'Led Zeppelin' text 27,63 'Led Zeppelin' text 28,65 'Led Zeppelin'" 7.png

а я хотел бы отформатировать вот так:
Код:

.\bin\magick -size 320x100 xc:lightblue -font georgia -pointsize 72 ^
            -draw "fill black text 27,67 'Led Zeppelin' ^
                              text 25,68 'Led Zeppelin' ^
                              text 23,67 'Led Zeppelin' ^
                              text 22,65 'Led Zeppelin' ^
                              text 23,63 'Led Zeppelin' ^
                              text 25,62 'Led Zeppelin' ^
                              text 27,63 'Led Zeppelin' ^
                              text 28,65 'Led Zeppelin' ^
                  fill white text 25,65 'Led Zeppelin' " ^
                        7.png

но двойные кавычки не дают мне подобной возможности. Файл не работает.
Помогите пожалуйста, а то без форматирования совсем не весело.

Iska 18-12-2016 16:39 2696640

Вынесете в отдельный файл, наподобие:
Код:

fill black
        text 27,67 'Led Zeppelin'
        text 25,68 'Led Zeppelin'
        text 23,67 'Led Zeppelin'
        text 22,65 'Led Zeppelin'
        text 23,63 'Led Zeppelin'
        text 25,62 'Led Zeppelin'
        text 27,63 'Led Zeppelin'
        text 28,65 'Led Zeppelin'
fill white
        text 25,65 'Led Zeppelin'

и указывайте его в аргументе:
Код:

"C:\Program Files\ImageMagick-6.9.3-Q8\convert.exe" ^
        -size 320x100 xc:lightblue ^
        -font georgia -pointsize 72 ^
        -draw @MyFill.txt ^
        7.png


hp1nt0 18-12-2016 16:56 2696645

Iska, спасибо. А нет варианта без внешнего файла?
Какое нибудь экранирование? или в переменную поместить?
Ваше решение отличное, просто когда надо что то на ходу поменять
гораздо удобнее когда всё перед глазами. И "читабельней".

Iska 18-12-2016 17:42 2696657

Разве что в каждой строке прописывать команду. Но тут выползает другая проблема — из-за этого потребуется указывать эту команду со всеми значимыми аргументами полностью. На Вашем примере разницы не увидишь, но можете сравнить:
Код:

"C:\Program Files\ImageMagick-6.9.3-Q8\convert.exe" ^
        -size 320x100 xc:lightblue ^
        -font georgia -pointsize 72 ^
        -draw "fill black text 27,67 'Led Zeppelin'" ^
        -draw "fill black text 25,68 'Led Zeppelin'" ^
        -draw "fill black text 23,67 'Led Zeppelin'" ^
        -draw "fill black text 22,65 'Led Zeppelin'" ^
        -draw "fill black text 23,63 'Led Zeppelin'" ^
        -draw "fill black text 25,62 'Led Zeppelin'" ^
        -draw "fill black text 27,63 'Led Zeppelin'" ^
        -draw "fill black text 28,65 'Led Zeppelin'" ^
        -draw "fill white text 25,65 'Led Zeppelin'" ^
        -draw "fill white text 10,44 'Led Zeppelin'" ^
        8.png

"C:\Program Files\ImageMagick-6.9.3-Q8\convert.exe" ^
        -size 320x100 xc:lightblue ^
        -font georgia -pointsize 72 ^
        -draw "fill black text 27,67 'Led Zeppelin'" ^
        -draw "text 25,68 'Led Zeppelin'" ^
        -draw "text 23,67 'Led Zeppelin'" ^
        -draw "text 22,65 'Led Zeppelin'" ^
        -draw "text 23,63 'Led Zeppelin'" ^
        -draw "text 25,62 'Led Zeppelin'" ^
        -draw "text 27,63 'Led Zeppelin'" ^
        -draw "text 28,65 'Led Zeppelin'" ^
        -draw "fill white text 25,65 'Led Zeppelin'" ^
        -draw "text 10,44 'Led Zeppelin'" ^
        9.png

— во втором файле в последней команде цвет будет взят не белый, а чёрный — видимо, умолчальный (?).

Посему, в данном конкретном случае, лучше использовать отдельную команду «-fill», тогда указанный цвет будет наследоваться всеми последующими командами «-draw». Т.е.:
Код:

"C:\Program Files\ImageMagick-6.9.3-Q8\convert.exe" ^
        -size 320x100 xc:lightblue ^
        -font georgia -pointsize 72 ^
        -fill black ^
        -draw "text 27,67 'Led Zeppelin'" ^
        -draw "text 25,68 'Led Zeppelin'" ^
        -draw "text 23,67 'Led Zeppelin'" ^
        -draw "text 22,65 'Led Zeppelin'" ^
        -draw "text 23,63 'Led Zeppelin'" ^
        -draw "text 25,62 'Led Zeppelin'" ^
        -draw "text 27,63 'Led Zeppelin'" ^
        -draw "text 28,65 'Led Zeppelin'" ^
        -fill white ^
        -draw "text 25,65 'Led Zeppelin'" ^
        -draw "text 10,44 'Led Zeppelin'" ^
        10.png


hp1nt0 18-12-2016 19:48 2696692

Iska, спасибо большое. Буду пробовать все варианты, посмотрю как удобней.
А не подскажите ли вы какую нибудь среду для работы с bat?
что нибудь вроде Windows PowerShell Integrated Scripting Environment (ISE)
только для cmd? похоже мне не помешает.

Iska 18-12-2016 20:36 2696703

Цитата:

Цитата hp1nt0
А не подскажите ли вы какую нибудь среду для работы с bat? »

Far Manager + идущий в комплекте плагин Colorer + плагин [ESC] (Editor's settings changer).

hp1nt0 18-12-2016 21:24 2696709

Iska, вашим советам цены нет. предложение дописать команды просто в точку.
Код:

.\bin\magick -size 470x100 xc:lightblue -font georgia -pointsize 72 ^
            -draw "fill black text 27,67 'Led Zeppelin'" ^
            -draw "fill black text 25,68 'Led Zeppelin'" ^
                        -draw "fill black text 23,67 'Led Zeppelin'" ^
                        -draw "fill black text 22,65 'Led Zeppelin'" ^
                        -draw "fill black text 23,63 'Led Zeppelin'" ^
                        -draw "fill black text 25,62 'Led Zeppelin'" ^
                        -draw "fill black text 27,63 'Led Zeppelin'" ^
                        -draw "fill black text 28,65 'Led Zeppelin'" ^
                        -draw "fill white text 25,65 'Led Zeppelin'" ^
        LZ.png

малой кровью результат достигнут. ещё раз спасибо.

Iska 18-12-2016 21:33 2696712

hp1nt0, ещё раз настойчиво советую: дабы не дублировать «fill color» в каждой команде «-draw», используйте отдельную команду «-fill» в нужном месте (пример приводил в последнем коде чуть выше).

hp1nt0 18-12-2016 22:06 2696720

Да вы совершенно правы. исполнил команду следующего вида:
Код:

.\bin\magick -size 470x100 xc:lightblue ^
                        -font georgia -pointsize 72 ^
                        -fill black ^
                        -draw "text 27,67 'Led Zeppelin'" ^
                        -draw "text 25,68 'Led Zeppelin'" ^
                        -draw "text 23,67 'Led Zeppelin'" ^
                        -draw "text 22,65 'Led Zeppelin'" ^
                        -draw "text 23,63 'Led Zeppelin'" ^
                        -draw "text 25,62 'Led Zeppelin'" ^
                        -draw "text 27,63 'Led Zeppelin'" ^
                        -draw "text 28,65 'Led Zeppelin'" ^
                        -fill white ^
                        -draw "text 25,65 'Led Zeppelin'" ^
        LZ3.png

и получил идентичный результат.
меня ввело в заблуждение что fill в двойных кавычках не предварялось минусом.
и опять спасибо.

hp1nt0 22-12-2016 15:45 2697692

Iska, здравствуйте.
Это конечно офтоп но поскольку я видел что вы тоже используете IM
то может это будет вам полезно знать: в IM7 добавили возможность добавлять файл с командами
форматирование которого не надо приводить в соответствие ограничений накладываемых
средой исполнения. Описание и обсуждение на форуме IM
http://www.imagemagick.org/discourse...hp?f=1&t=31079


Iska 22-12-2016 20:15 2697748

Цитата:

As mentioned the primary focus of the changes to the Shell API or Command Line Interface is the abstraction so that not only can options be read from command line arguments, but also from a file (script) or from a file stream (interactive commands, or co-processing).
hp1nt0, ну, давным-давно пора было это сделать.


Время: 12:05.

Время: 12:05.
© OSzone.net 2001-