如果我在Windows中手动运行以下命令,它会正常运行并创建Junction Directory。
mklink /j "c:\Users\userid\OneDrive - Enterprise 365\backup\C\Users\userid\test" c:\Users\userid\test
但是,如果我用Go编程,使用以下代码,它会返回Local NTFS volumes are required to complete the operation.
mklink := "mklink /j \"c:\\Users\\userid\\OneDrive - Enterprise 365\\backup\\C\\Users\\userid\\test\\\" c:\\Users\\userid\\test"
cmd := exec.Command("cmd", "/c", mklink)
out, err = cmd.CombinedOutput()
我试过几种不同的方法,但总是得到同样的结果。
有什么想法吗?
2条答案
按热度按时间fv2wmkja1#
我可以通过使用PowerShell来让它工作。
我假设问题是GoLang发送嵌入式报价的方式-
cmd
错误地解释了它们。PowerShell似乎更“宽容”。lbsnaicq2#
我注意到Go的版本,你在OneDrive路径中的“test”之后有一个尾随反斜杠。这可能是一个微妙的Windows行为。
另一种可能性-“mklink /j”需要提升的命令提示符。你的Go脚本是在这样的管理模式窗口中运行的吗?