我想在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,我似乎无法用英语获取错误。第一行转换为&#34; 您没有足够的授权来执行此过程&#34;
答案 0 :(得分:2)
以管理员身份运行R.然后,当您从R中运行“Mklink”时,您就是管理员。
实际上,您还可以使用R函数file.symlink创建符号链接。
答案 1 :(得分: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()
,这在某种程度上相当于符号链接。