如何添加上下文菜单选项以启动给定工作目录中的程序

时间:2018-05-22 19:24:19

标签: r windows registry contextmenu right-click

当您在Windows上安装Git时,当您右键单击文件夹时,它会添加一个上下文菜单选项" Git Bash Here"。它的方式是添加如下注册表项:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\git_shell\command]
@="\"C:\\Program Files\\Git\\git-bash.exe\" \"--cd=%1\""

注意最后将cd参数传递给程序的目录名。

我想为R(和其他程序)做类似的事情。不幸的是,R不接受cd参数。这将启动R:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\R\command]
@="\"C:\\Program Files\\R\\R-3.4.3\\bin\\x64\\Rgui.exe\" \"--cd=%1\""

但是它给出了一条错误消息,指出cd参数无法识别,Rgui将从默认工作目录开始,打败整个点。

我真正想要它做的是相当于这个命令:

start "R" /D %1 "C:\Program Files\R\R-3.4.3\bin\x64\Rgui.exe"

其中%1是右键单击的文件夹。这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以编写在启动时运行的R代码并检查命令行参数。 您可以将以下代码放在C:\Program Files\R\R-3.4.3\etc\Rprofile.site的末尾(或在启动时执行的任何其他文件):

local({

  processArg <- function(arg) {
    parts <- strsplit(arg, "=")[[1]]
    if (length(parts) == 2) {
      if (parts[1] == "R_startup_wd") {
        setwd(parts[2])
      }
    }
  }

  invisible(sapply(commandArgs(FALSE), processArg))
})

它检查是否使用参数R_startup_wd=your_working_dir调用了R,如果是,则更改工作目录。 然后你可以像R

一样打电话给R

"C:\Program Files\R\R-3.4.3\bin\x64\Rgui.exe" "R_startup_wd=your_working_dir"

请注意,参数名称不带&#34; - &#34;,即我们有R_startup_wd而不是--R_startup_wd。否则RGui会抱怨&#34;未知的论点&#34;

当然,您可以在没有给出参数的情况下使用R.