From 159a37fa377ab7202ec67e1675a3e2a955c8291d Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 28 Apr 2024 15:55:30 +0900 Subject: [PATCH] Restore CmdLine parameter when running commands using cmd.exe --- src/util/util_windows.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/util/util_windows.go b/src/util/util_windows.go index cbaa8ce..e0ab9e3 100644 --- a/src/util/util_windows.go +++ b/src/util/util_windows.go @@ -57,10 +57,20 @@ func (x *Executor) ExecCommand(command string, setpgid bool) *exec.Cmd { } x.shellPath.Store(shell) } - cmd := exec.Command(shell, append(x.args, command)...) - cmd.SysProcAttr = &syscall.SysProcAttr{ - HideWindow: false, - CreationFlags: 0, + var cmd *exec.Cmd + if strings.Contains(shell, "cmd") { + cmd = exec.Command(shell) + cmd.SysProcAttr = &syscall.SysProcAttr{ + HideWindow: false, + CmdLine: fmt.Sprintf(`%s "%s"`, strings.Join(x.args, " "), command), + CreationFlags: 0, + } + } else { + cmd = exec.Command(shell, append(x.args, command)...) + cmd.SysProcAttr = &syscall.SysProcAttr{ + HideWindow: false, + CreationFlags: 0, + } } return cmd }