如何添加上下文菜单选项以在给定的工作目录中启动程序
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。
当您在 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,如果是,则更改工作目录。
然后你可以像
"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。