Verwenden Sie ProcessMonitor, um die genauen Argumente und das Arbeitsverzeichnis von R zu bestimmen. Wenn Sie diese Werte erhalten, können Sie Ihren Debugger mit denselben Einstellungen einrichten.
Windows Shell-Integrationsbefehl funktioniert nicht, möglicher Syntaxfehler
Ich möchte eine Shell-Erweiterung erstellen, um glänzende Apps in einem lokalen Prozess auf einem Windows 7 Professional 64-Bit auszuführen . Ich brauche einen Befehl wie R -e "shiny::runApp('~/shinyapp')"
definiert in der glänzenden Tutorial Webseite . Normalerweise erstelle ich ein Verzeichnis, das shiny
in jedem Datenordner, den ich habe, aufgerufen wird. Der vermeintliche Befehl sollte also immer so sein:R -e "shiny::runApp('%1'/shiny) for me."
Also habe ich einen Schlüssel namens "Shine!" und einen Unterschlüssel namens "command" in HKEY_CLASSES_ROOT \ Directory \ shell mit einem Wert. C:\Program Files\R\R-2.15.1\bin\x64\R.exe -e "shiny::runApp('%1/shiny')"
Die dir-Struktur in regedit lautet wie folgt:
Wenn ich nun mit der rechten Maustaste auf den Datenordner (der den glänzenden Ordner enthält) und auf "Shine!" Klicke, wird eine R-Konsole (eine Cmd-Konsole) geöffnet und geschlossen. Die App funktioniert jedoch nicht (die Apps werden gründlich geprüft und funktionieren.) Ich habe auch den Befehl regedit in cmd überprüft.
Um ehrlich zu sein, ich kenne weder C, Windows Shell noch MSDN. Ich habe einige Fragen, Links und Dokumente geprüft, zog es jedoch vor, eine einfache Lösung ohne Fehlerprüfung zu finden (fehlender Ordner usw.).
Ich denke, mir fehlt hier ein Syntaxfehler, also habe ich mehrere Versionen ausprobiert, wie zB nur '%1'
und Rechtsklick auf den glänzenden Ordner, auch Versionen wie '/'%1/'/shiny'
usw. Was ist falsch und was noch wichtiger ist, wie kann ich einen Rechtsklick mit dem% debuggen? 1 sache, während sich das cmd-fenster so schnell wie hölle schließt?
2 Antworten auf die Frage
% 1 wird von der Windows-Shell um den Namen des Ordners erweitert, auf den Sie mit der rechten Maustaste geklickt haben.
Wenn der Befehl, den Sie ausführen möchten, lautet:
"C:\Program Files\R\R-2.15.1\bin\x64\R.exe" -e "shiny::runApp('%1/shiny')"
Sie können es durch einen Aufruf an cmd.exe ersetzen, der nach der Ausführung geöffnet bleibt und die Anführungszeichen beibehält (indem Sie sie in einem zusätzlichen Paar Anführungszeichen verdoppeln), sodass Sie die Befehlsausgabe von r.exe überprüfen können:
cmd /k " ""C:\Program Files\R\R-2.15.1\bin\x64\R.exe"" -e ""shiny::runApp('%1/shiny')"" "
Ich habe keine Erfahrung mit R, aber ich vermute, dass der runApp-Befehl die Backslashes im Windows-Pfad schlecht verarbeitet oder ein Leerzeichen enthält, und ich denke auch, dass "~" mit dem aktuellen Verzeichnis funktioniert, da Windows dies nicht tut. Es gibt ein echtes $ HOME-Verzeichnis.
Die Lösung hierfür besteht darin, einen CD-Befehl und den Aufruf von R.exe über cmd.exe zu verketten:
cmd /c " cd /d ""%~1"" & ""C:\Program Files\R\R-2.15.1\bin\x64\R.exe"" -e ""shiny::runApp('~/shiny')"" "
(cmd / c schließt das neue Fenster, cmd / k hält es nach der Ausführung geöffnet, sodass das letzte Beispiel das Fenster nach dem Starten von R.exe schließt.)
Verwandte Probleme
-
12
Warum wird der Ordner / winsxs so groß und kann er verkleinert werden?
-
2
Erhöhte Berechtigungen für Startanwendungen in Windows?
-
14
PDF Viewer unter Windows
-
7
Welche Windows-Dienste kann ich sicher deaktivieren?
-
8
Firefox PDF-Plugin zum Anzeigen von PDF-Dateien im Browser unter Windows
-
1
Windows verliert das Bildschirmlayout
-
1
Gibt es eine Möglichkeit, Installationen / Updates zu verhindern, die meine Festplatte mit kryptisch...
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
6
Log Viewer unter Windows
-
3
Windows-Hintergrundproblem mit zwei Bildschirmen