【问题标题】:Creating a soft symbolic link from R on Windows在 Windows 上从 R 创建软符号链接
【发布时间】:2015-03-03 18:09:05
【问题描述】:

我想在 Windows 上的 R 中创建一个 符号链接到文件(使用 Mklink)。它失败了,因为我不能告诉 R “以管理员身份运行它”。有什么办法可以做到吗?

不过,我确实设法创建了硬符号文件链接:

path_src <- file.path(tempdir(), "test.txt")
write("Hello World!", file = path_src)
path_tgt <- file.path(tempdir(), "test_symlink.txt")
shell(sprintf("mklink /H %s %s", 
  normalizePath(path_tgt, mustWork = FALSE),
  normalizePath(path_src)
))

注意path_tgt 的文件如何反映对path_src 所做的更改:

write("HELLO WORLD!", file = path_src, append = TRUE)

然而,这失败了:

path_tgt_2 <- file.path(tempdir(), "test_symlink_2.txt")
> shell(sprintf("mklink /D %s %s", 
  normalizePath(path_tgt_2, mustWork = FALSE),
  normalizePath(path_src)
))
Ihre Berechtigungen reichen nicht aus, um diesen Vorgang auszufhren.
Warning messages:
1: running command 'C:\Windows\system32\cmd.exe /c mklink /D C:\Users\Thyson\AppData\Local\Temp\Rtmpum73ZU\test_symlink_2.txt C:\Users\Thyson\AppData\Local\Temp\Rtmpum73ZU\test.txt' had status 1 
2: In shell(sprintf("mklink /D %s %s", normalizePath(path_tgt_2, mustWork = FALSE),  :
  'mklink /D C:\Users\Thyson\AppData\Local\Temp\Rtmpum73ZU\test_symlink_2.txt C:\Users\Thyson\AppData\Local\Temp\Rtmpum73ZU\test.txt' Ausführung mit Fehlerkode 1 fehlgeschlagen

注意

由于 Windows 的德语版本,我似乎无法获得英文错误。第一行有点类似于“您没有足够的授权来执行此过程

【问题讨论】:

  • 如需翻译,请尝试:Sys.setenv(LANGUAGE='en')
  • This seems post 建议没有附加组件是不可能的。
  • @Thomas:感谢您的指点!有点糟糕,它需要一个附加组件,但总比没有好;-) PS:我确实有 LANGUAGE = "en" (这是我所有项目的 .Renviron 文件中的一般设置)和我所有的其他“在R" 错误实际上是英文的,但shell() 命令似乎以某种方式将所有内容委托给基本操作系统级别。

标签: r symlink


【解决方案1】:

由于2016 (Windows 10 Insiders build 14972),如果您启用开发者模式(在设置>更新和安全>针对开发者),您也可以在没有管理员权限的情况下创建符号链接。

这在带有mklink 的 Windows 控制台中有效,但似乎 R 的 file.symlink() 不起作用(从 R 4.0.3 开始),可能是因为需要设置 dwFlags

为了从 R 调用它,当路径包含空格时,我需要添加 "

shell(sprintf('mklink "%s" "%s"', 
              normalizePath(link, mustWork = FALSE),
              normalizePath(original)
))

对于目录,您还可以考虑使用Sys.junction(),它在某种程度上相当于符号链接。

【讨论】:

    【解决方案2】:

    以管理员身份运行 R。然后,当您在 R 中运行“Mklink”时,您就是管理员。

    其实也可以使用R函数file.symlink来创建符号链接。

    【讨论】:

    • 我如何以管理员身份显式运行 R?当我以具有管理员权限的 Windows 用户身份登录时从 RStudio 中打开 R,它不起作用
    • 尝试以管理员身份运行 RStudio。
    • 即使您已经以具有管理员权限的Windows用户身份登录,要以管理员身份运行RStudio,您也应该右键单击桌面上的Rstudio图标,然后选择“以管理员身份运行”。跨度>
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多