Я хочу создать расширение оболочки для запуска блестящих приложений в локальном процессе на 64-битной Windows 7 Professional. Мне нужна команда типа R -e "shiny::runApp('~/shinyapp')" как это определено на блестящей веб-странице учебника. Я обычно создаю каталог с именем « shiny в каждой папке с данными. Таким образом, предполагаемая команда всегда должна выглядеть следующим образом: R -e "shiny::runApp('%1'/shiny) for me."

Поэтому я создал ключ под названием «Блеск!"и подключ с именем" command "в HKEY_CLASSES_ROOT\Directory\shell со значением C:\Program Files\R\R-2.15.1\bin\x64\R.exe -e "shiny::runApp('%1/shiny')" Структура dir в regedit следующая:

Теперь всякий раз, когда я щелкаю правой кнопкой мыши по папке с данными (содержащей блестящую папку) и нажимаю «Shine!"консоль R (консоль cmd) открывается и закрывается, но приложение не работает (приложения тщательно проверены и работают, я также проверил команду regedit в cmd).

Если честно, я не знаю C, оболочку Windows или что-то в этом роде. Я проверил несколько вопросов, ссылок и документов, но предпочел найти простое решение без проверки ошибок (отсутствующая папка и т.д.).

Я думаю, что здесь отсутствует синтаксическая ошибка, поэтому я попробовал несколько версий, таких как '%1' и щелкнув правой кнопкой мыши блестящую папку, а также версии, такие как '/'%1/'/shiny' и т.д. Что не так и что еще более важно, как я могу отладить щелчок правой кнопкой мыши с% 1, пока окно cmd закрывается так же быстро, как ад?

2 ответа2

0

% 1 расширяется оболочкой Windows до имени папки, по которой вы щелкнули правой кнопкой мыши.

Итак, если команда, которую вы хотите выполнить:

"C:\Program Files\R\R-2.15.1\bin\x64\R.exe" -e "shiny::runApp('%1/shiny')"

Вы можете заменить его вызовом cmd.exe, который остается открытым после выполнения и сохраняет двойные кавычки (удваивая их внутри дополнительной пары двойных кавычек), так что вы можете проверить вывод команды r.exe:

cmd /k " ""C:\Program Files\R\R-2.15.1\bin\x64\R.exe"" -e ""shiny::runApp('%1/shiny')"" "

У меня нет опыта работы с R, но я предполагаю, что команда runApp плохо работает с обратными слешами в пути Windows или содержит пробел, и я также предполагаю, что «~» работает с текущим каталогом, как это не делает Windows. у меня нет реального каталога $ HOME.

Решение для этого состоит в том, чтобы связать команду CD и вызов R.exe через cmd.exe:

cmd /c " cd /d ""%~1"" & ""C:\Program Files\R\R-2.15.1\bin\x64\R.exe"" -e ""shiny::runApp('~/shiny')"" "

(cmd /c закрывает новое окно, cmd /k сохраняет его открытым после выполнения, поэтому последний пример закрывает окно после запуска R.exe).

0

Используйте ProcessMonitor, чтобы определить точные аргументы и рабочий каталог R запущен. Когда вы получите эти значения - вы можете настроить свой отладчик с такими же настройками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .