在 Windows 上从 R 创建软符号 link
Creating a soft symbolic link from R on Windows
我想创建一个 soft 符号 link 到 Windows 上的 R 中的文件(使用 Mklink)。它失败了,因为我不能告诉 R "run it as administrator"。有什么办法可以做到这一点吗?
我确实设法创建了硬符号文件 links,但是:
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 的德文版本,我似乎看不出英文错误。第一行翻译成类似于“您没有足够的授权来执行此过程”
运行 R 作为管理员。那么当你在 R 中 运行 "Mklink" 时,你就是管理员。
其实你也可以使用R函数file.symlink来创建符号链接
自 2016 (Windows 10 Insiders build 14972) 起,如果您启用开发者模式(在“设置”>“更新和安全”>“针对开发者”中),您也可以在没有管理员权限的情况下创建符号链接。
这在 Windows 控制台中与 mklink
一起工作,但似乎 R 的 file.symlink()
不工作(从 R 4.0.3 开始),可能是因为 dwFlags
需要设置。
为了从 R 调用它,我需要在路径包含空格时添加 "
:
shell(sprintf('mklink "%s" "%s"',
normalizePath(link, mustWork = FALSE),
normalizePath(original)
))
对于目录,你也可以考虑使用Sys.junction()
,这在某种程度上相当于符号链接。
我想创建一个 soft 符号 link 到 Windows 上的 R 中的文件(使用 Mklink)。它失败了,因为我不能告诉 R "run it as administrator"。有什么办法可以做到这一点吗?
我确实设法创建了硬符号文件 links,但是:
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 的德文版本,我似乎看不出英文错误。第一行翻译成类似于“您没有足够的授权来执行此过程”
运行 R 作为管理员。那么当你在 R 中 运行 "Mklink" 时,你就是管理员。
其实你也可以使用R函数file.symlink来创建符号链接
自 2016 (Windows 10 Insiders build 14972) 起,如果您启用开发者模式(在“设置”>“更新和安全”>“针对开发者”中),您也可以在没有管理员权限的情况下创建符号链接。
这在 Windows 控制台中与 mklink
一起工作,但似乎 R 的 file.symlink()
不工作(从 R 4.0.3 开始),可能是因为 dwFlags
需要设置。
为了从 R 调用它,我需要在路径包含空格时添加 "
:
shell(sprintf('mklink "%s" "%s"',
normalizePath(link, mustWork = FALSE),
normalizePath(original)
))
对于目录,你也可以考虑使用Sys.junction()
,这在某种程度上相当于符号链接。