Открыть файл с помощью пользовательской команды: как указать файл в строке cmd?

Я хочу открыть PDF с помощью PDF-XChange Viewer через WINE. Как указать имя файла pdf в строке «Пользовательская команда», чтобы я мог открыть файл PDF с помощью PDF-XChange Viewer, дважды щелкнув по нему? Я попытался использовать \ "z:% f \", следуя предложению здесь для использования Foxit reader. Но мой PDF-XChange Viewer запускается только с пустым окном.

wine "c:/Program Files/Tracker Software/PDF Viewer/PDFXCview.exe" \"z:%f\"

Я использую Ubuntu 10.04 и WINE 1.2.2. PDF-XChange Viewer версия 2.5.

4
задан 13 April 2017 в 15:24

6 ответов

Если сценарий работает, вы должны принять этот ответ, даже если он был вашим.

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

wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" Z:%f

Ссылка здесь для фотошопа с доп. информация об изменении отображаемого имени при желании для использования правой кнопкой мыши - http://ubuntuforums.org/showpost.php?p=9193687&postcount=9

0
ответ дан 13 April 2017 в 15:24

Если эта программа уже установлена ​​с использованием Wine, я не думаю, что ей нужен абсолютный путь. Я думаю, что только

 wine pdfxcview filename

откроет файл.

Хорошо, возможно, мой ответ глупый. Что на самом деле вы пытаетесь сделать? Вы пытаетесь исправить ошибку запуска программы?

0
ответ дан 13 April 2017 в 15:24

Я понимаю, что это старый вопрос, но я хочу поделиться своим решением, которое я вычислил после того, как начал использовать PDFXchangeEditor (преемник PDFXchangeViewer), а затем столкнулся с проблемой, чтобы заставить его принимать несколько входных файлов от хост-компьютера. Прежде всего, принятый ответ и все остальные ответы, которые были опубликованы, предполагают, что программа будет обрабатывать только один файл. Вы можете на самом деле бросить в него несколько файловых аргументов одновременно, и он откроет их все нормально, с небольшим фокусом.

Хитрость заключается в использовании расширения кода %F в поле Exec в модуле запуска .desktop приложения и предшествует всем развернутым локальным аргументам файла в поле с помощью Z:, что можно сделать с помощью следующего скрипта

[ 1115] Назовите это wine-env. Это идет в /usr/local/bin и обязательно дайте ему chmod +x

#!/bin/bash

allargs=("$@")

fixpath=0
for idx in "${!allargs[@]}"; do
    arg="${allargs[$idx]}"

    if [[ $fixpath -eq 0 ]]; then
        # fix file paths only after the first executable is found in arg
        if [[ "$arg" == *.exe ]]; then
            fixpath=1
        fi
        continue
    elif [[ $fixpath -eq 1 ]]; then
        # if arg starts with '/' and it's a path that exists on host
        # precede the path with drive 'Z:'
        if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
            allargs[$idx]="Z:$arg"
        fi
    fi
done

exec env "${allargs[@]}"

А для файла приложения .desktop назовите его pdfxce.desktop и поместите в ~/.local/share/applications/, и его содержимое должно выглядеть следующим образом this

[Desktop Entry]
Name=PDF-XChange Editor
Type=Application
Terminal=false
Exec=wine-env WINEDEBUG=-all WINEPREFIX=/home/<user>/.local/share/bottles/pdfxce wine PDFXEdit.exe %F
Icon=/home/<user>/.local/share/icons/bottles/pdfxce-pdfxedit.png
Path=/home/<user>/.local/share/bottles/pdfxce/drive_c/Program Files/Tracker Software/PDF Editor
StartupNotify=true
StartupWMClass=PDFXEdit.exe

Вам необходимо изменить деталь со своим именем пользователя. Я храню все мои каталоги с винными префиксами в папке под названием «бутылки». Вы можете по-своему организовать винные префиксы, поэтому измените все части, которые содержат «бутылки», соответственно

И последний шаг, назначьте PDF-файлы приложению, как обычно (щелкните правой кнопкой мыши на pdf -> Properties -> вкладка Open With)

Ссылка: Спецификация записи рабочего стола Freedesktop

0
ответ дан 13 April 2017 в 15:24

Найдены записи в блоге об этой же проблеме для Foxit reader и для PDF-XChange Viewer . Никто из них не работал для меня. Поэтому я отредактировал их и получил один специально для моего случая:

#!/bin/bash  
Filename="z:${1//\//\\}"
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename

Сохраните этот скрипт bash и откройте pdf, используя этот скрипт. Теперь дважды щелкните pdf файлы, чтобы открыть их с помощью PDF-XChange Viewer.

0
ответ дан 13 April 2017 в 15:24

Я перешел по этой ссылке, чтобы установить 32-битное средство просмотра PDF XChange в Ubuntu 64 Bit 14.04. Затем по ссылке показан скрипт для открытия средства просмотра PDF Xchange с именем файла в качестве аргумента. Я сделал этот сценарий и сохранил его в /bin

. Затем я отредактировал ~/.local/share/applications/wine-extension-pdf.desktop так:

[Desktop Entry]
Type=Application
Name=PDF-XChangeViewer
MimeType=application/pdf;
Exec=PDFXCview %f
NoDisplay=true
StartupNotify=true

Мой сценарий получил название PDFXCview

.
0
ответ дан 13 April 2017 в 15:24

Это основано на превосходном сценарии @ Flint.

Сначала я попробовал переменную "Z:"%U в конце поля рабочего стола Exec= для программ Wine. Он работал нормально, пока я не открыл программу без указанного файла. Программы Wine жаловались на отсутствие файла, потому что строка Exec= указывала на диск Z: это явно не файл, а абсолютный путь к файлу. File not found: Z: или похожие сообщения, появляющиеся в программе Wine. Немного раздражает.

Проблема с "Z:"%U заключается в том, что это не условная переменная, если там используется Z :. Однако Wine абсолютно требует Z: иначе он не может найти правильные пути к файлам.

Ваш сценарий делает все "Z:"%U условным предложением. Сценарий выполняет работу именно так, как я хотел.

Однако, скрипт должен учитывать все исполняемые файлы, написанные также заглавными буквами. В настоящее время он не может указывать какие-либо файлы MS Office (docx, pptx ...) на MS Office 2010, потому что все исполняемые файлы программы написаны как WINWORD.EXE или POWERPNT.EXE. Конечно, исполняемые файлы можно переименовать в нижний регистр, но я предпочитаю более универсальное решение, чем переименование отдельных исполняемых файлов для каждой программы.

Грязное и универсальное решение состоит в том, чтобы изменить код скрипта, например:

#!/bin/bash

allargs=("$@")

fixpath=0
for idx in "${!allargs[@]}"; do
    arg="${allargs[$idx]}"

    if [[ $fixpath -eq 0 ]]; then
        # fix file paths only after the first executable is found in arg
        if [[ "$arg" == *.exe ]]; then
            fixpath=1
        fi
        if [[ "$arg" == *.EXE ]]; then
            fixpath=1
        fi
        continue
    elif [[ $fixpath -eq 1 ]]; then
        # if arg starts with '/' and it's a path that exists on host
        # precede the path with drive 'Z:'
        if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
            allargs[$idx]="z:${arg//\//\\}"
        fi
    fi
done

exec env "${allargs[@]}"

Оператор or по какой-то причине не работал. В любом случае, я уверен, что есть более элегантный способ добиться того же результата.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: