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

How to add context menu option to start a program in the given working directory

当您在 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 是右键单击的文件夹。这可能吗?

您可以编写在启动时运行并检查命令行参数的 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

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

请注意,参数名称不带“--”,即我们有 R_startup_wd 而不是 --R_startup_wd。否则 RGui 会报错 "unknown arguments"

你当然可以在没有给定参数的情况下使用 R。