O comando de integração do shell do Windows não está funcionando, possível erro de sintaxe

0

Eu quero criar uma extensão do shell para executar aplicativos brilhantes em um processo local em um Windows 7 Professional de 64 bits. Preciso de um comando como R -e "shiny::runApp('~/shinyapp')" , conforme definido na na brilhante página do tutorial . Eu costumo criar um diretório chamado shiny em todas as pastas de dados que tenho. Então o suposto comando deve ser sempre como: R -e "shiny::runApp('%1'/shiny) for me."

Então eu criei uma chave chamada "Shine!" e uma subchave denominada "command" em HKEY_CLASSES_ROOT \ Directory \ shell com um valor C:\Program Files\R\R-2.15.1\bin\x64\R.exe -e "shiny::runApp('%1/shiny')" A estrutura dir no regedit é a seguinte:

Agora,semprequeclicocomobotãodireitodomousenapastadedados(contendoapastabrilhante)eclicoem"Shine!", um console R (um console cmd) é aberto e fechado, mas o aplicativo não está funcionando e trabalhando, eu também verifiquei o comando regedit em cmd).

Para ser honesto, não conheço o C, o shell do Windows ou qualquer material do MSDN. Eu verifiquei várias perguntas , links e documentos , mas preferiu criar uma solução simples sem verificação de erros (pasta ausente, etc).

Acho que estou perdendo um erro de sintaxe aqui, então eu tentei várias versões como '%1' e clique com o botão direito na pasta brilhante, também versões como '/'%1/'/shiny' etc. O que está errado e mais importante, como pode Eu depuro um botão direito do mouse com a coisa% 1, enquanto a janela cmd está fechando tão rápido quanto o inferno?

    
por barerd 12.05.2013 / 14:37

2 respostas

0

% 1 é expandido pelo shell do Windows para o nome da pasta em que você clicou com o botão direito do mouse.

Então, se o comando que você quer executar é:

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

você pode substituí-lo por uma chamada para cmd.exe que permanece aberta após a execução e preserva as aspas duplas (dobrando-as dentro de um par extra de aspas duplas), para que você possa verificar a saída do comando r.exe:

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

Eu não tenho experiência com R, mas meu palpite é que o comando runApp lida mal com as barras invertidas no caminho do Windows, ou que ele contém um espaço, e eu também acho que "~" funciona com o diretório atual, O Windows não tem um diretório real $ HOME.

A solução para isso é encadear um comando de CD e a chamada R.exe via 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 fecha a nova janela, cmd / k a mantém aberta após a execução, então o último exemplo fecha a janela após o lançamento de R.exe).

    
por 13.05.2013 / 14:01
0

Use o ProcessMonitor para determinar os argumentos exatos e o diretório de trabalho de R iniciado. Quando você obtiver esses valores, poderá configurar seu depurador com as mesmas configurações.

    
por 13.05.2013 / 12:31