代码之家  ›  专栏  ›  技术社区  ›  Matthew

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

  •  0
  • Matthew  · 技术社区  · 7 年前

    在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不接受 光盘 参数。这将启动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\""
    

    但它给出了一个错误消息 光盘 参数无法识别,rgui将以默认的工作目录开始,从而破坏整个点。

    我真正想要它做的是这个命令的等价物:

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

    哪里 %1 是右键单击的文件夹。这有可能吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   AEF user2876408    7 年前

    您可以编写在启动时运行的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 R_startup_wd=your_working_dir 如果是,则更改工作目录。 你可以这样叫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会抱怨“未知参数”

    当然,在没有给出参数的情况下,仍然可以使用r。