为什么mklink /j在手动输入时工作,但在使用exech . command运行时不工作?



如果我在Windows中手动运行以下命令,它会运行良好并创建Junction目录。

mklink /j "c:UsersuseridOneDrive - Enterprise 365backupCUsersuseridtest" c:Usersuseridtest

但是,如果我用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()

我试过几种不同的方法,但总是得到相同的结果。

任何想法?

我可以用PowerShell代替它工作。

mklink := `New-Item -ItemType Junction -Path "c:\UsersuseridOneDrive - 
Enterprise 365backupCUsersuseridtest" -Target c:\Usersuseridtest`
cmd := exec.Command("PowerShell", "-Command", mklink)
out, err = cmd.CombinedOutput()

我假设问题是GoLang发送嵌入引号的方式-cmd错误地解释了它们。PowerShell似乎更"宽容"。

最新更新