【问题标题】:Why mklink /j works when manually entering but not when run using exec.Command?为什么 mklink /j 在手动输入时有效,但在使用 exec.Command 运行时无效?
【发布时间】:2021-05-06 15:59:40
【问题描述】:

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

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()

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

有什么想法吗?

【问题讨论】:

    标签: go command mklink


    【解决方案1】:

    我可以改用 PowerShell 来让它工作。

    mklink := `New-Item -ItemType Junction -Path "c:\\Users\userid\OneDrive - 
    Enterprise 365\backup\C\Users\userid\test" -Target c:\\Users\userid\test`
    
    cmd := exec.Command("PowerShell", "-Command", mklink)
    out, err = cmd.CombinedOutput()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多