在go lang中使用exec.command进行网络使用

时间:2018-01-04 02:46:02

标签: windows go

我需要使用go在Windows中映射驱动器,并发现此链接很有用 What is the best way to map windows drives using golang?

当我尝试使用此处给出的代码时,我遇到了此错误

exec: "net use": executable file not found in %PATH% 

我验证了go的bin文件夹在PATH变量中。我也试过像

那样运行它
cmd, err := exec.Command("cmd", "/c", "NET USE", "T:", \\SERVERNAME\C$, "/PERSISTENT").CombinedOutput()  

但是我收到了这个错误:

exit status 1 You used an option with an invalid value.  

我在这里做错了什么帮助?

1 个答案:

答案 0 :(得分:1)

exec.Command()的每个参数都用作单个参数,所以:

exec.Command(... "NET USE", ..)

意味着NET USE作为单个参数传递,这与从命令行执行此操作相同:

cmd /c "net use"

这意味着它会尝试查找net use.exe,而不是将参数use传递给net.exe

所以正确的方法是:

exec.Command("cmd", "/c", "net", "use", "Q:, `\\SERVER\SHARE`, "/user:Alice pa$$word", "/P")

cmd /c部分可能不需要,但我没有Windows机器可以验证。

另请注意我对`而不是\\SERVER\SHARE使用反引号(")的方式,因此您不必将反斜杠加倍。