У меня есть команда, которую я должен был выполнить. Когда я делаю это вручную с помощью командной строки, по одной команде за раз, у меня нет проблем. Я пытаюсь автоматизировать это.
То, что я пытался
Вот что я печатаю вручную в командной строке. Я также попытался использовать файл .bat
.
cd c:/Program Files/Inkscape
inkscape --shell
c:/wamp/www/i/t1.svg --export-png=c:/wamp/www/i/r1.png --export-dpi=900
Произошла попытка использования php exec()
.
exec('cd c:/Program Files/Inkscape && inkscape --shell && c:/wamp/www/i/t1.svg --export-png=c:/wamp/www/i/r1.png --export-dpi=900');
Что происходит
Отладка с помощью echo
, то ясно, что --shell
вызывает исполнение остановить. При запуске командного файла пакет закрывается этой командой. При запуске php exec()
больше команд не будет работать после вызова этой команды. Когда я запускаю эту команду вручную по командной строке, я получаю этот ответ.
Inkscape 0.91 r13725 interactive shell mode. Type 'quit' to quit.
После этого я могу выполнить следующую команду, которую мне нужно запустить. Однако я не могу запустить эту команду.
inkscape --shell && c:/wamp/www/i/t1.svg --export-png=c:/wamp/www/i/r1.png --export-dpi=900
я получаю тот же ответ, и действия после --shell
не принимаются.
Когда я удалил --shell
как из пакетного файла, он дает мне ошибку Inkscape
(inkscape.exe:11912): Gtk-WARNING **: Could not find the icon 'object-visible'.
The 'hicolor' theme was not found either, perhaps you need to install it.
You can get a copy from:
http://icon-theme.freedesktop.org/releases
(inkscape.exe:11912): Gdk-CRITICAL **: inner_clipboard_window_procedure: assertion 'success' failed
exec
функцию без --shell
результатов в файле, чтобы никогда не закончить погрузку.
Что мне нужно
Это может быть пакетный файл, PHP exec()
функция, или любой другой способ, чтобы выполнить эту команду, до тех пор, как он может быть автоматизирован. Пожалуйста, объясните свой ответ, чтобы я мог лучше понять выполнение команд.
Update: Какие рабочие
Благодарности к обоим ответам за помощь в выяснить это.
В inkscape мне пришлось создать папку в Inkscape/share/icons
с именем hicolor
, и в этой папке поместите пустой файл с именем index.theme
. Затем мне пришлось исправить свой синтаксис.
cd c:/Program Files/Inkscape && inkscape --file=t1.svg --export-eps=r1.eps --export-dpi=900)
Фрагмент «интерактивный режим оболочки» довольно очевиден. Вы хотите, чтобы Inkscape был * не * интерактивным, так как вас не будет, чтобы попасть на клавиатуру. –
IIRC, интерактивный режим принимает команды от stdin. Мой ответ ниже дает возможное решение, которое использует это, хотя я понятия не имею, будет ли оно работать в Microsoft Windows. – ghoti