#go #command #mklink
#Вперед #команда #мклинк
Вопрос:
Если я вручную выполню следующую команду в Windows, она будет работать нормально и создаст каталог соединения.
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()
Я пробовал это несколькими разными способами, но всегда получал один и тот же результат.
Есть какие-нибудь идеи?
Ответ №1:
Я смог заставить его работать, используя вместо этого 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 кажется гораздо более «снисходительным».