windows - 带有双引号参数的 exec

标签 windows go

我想使用 exec 包执行 find Windows 命令,但 Windows 正在做一些奇怪的转义。

我有这样的东西: out, err := exec.Command("find", `"SomeText"`).输出()

但这是抛出错误,因为 Windows 正在将其转换为 找到/SomeText"

有人知道为什么吗?如何使用 exec 包在 Windows 上执行 find

谢谢!

最佳答案

好吧,它比您预期的要复杂一些,但是有一个解决方案:

package main

import (
    "fmt"
    "os/exec"
    "syscall"
)

func main() {
    cmd := exec.Command(`find`)
    cmd.SysProcAttr = &syscall.SysProcAttr{}
    cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt`
    out, err := cmd.Output()
    fmt.Printf("%s\n", out)
    fmt.Printf("%v\n", err)
}

不幸的是,although support for this was added in 2011 , 它似乎没有进入 the documentation然而。 (虽然也许我只是不知道去哪里看。)

关于windows - 带有双引号参数的 exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954729/

相关文章:

windows - Git Bash 无法解析 %userprofile%

java - 读取内存中的exe文件并执行

go - 不在控制台上打印接收 channel 值

go - 如何实现 goroutine 来执行良好的请求

javascript - Windows 窗体 Web 浏览器控件和 Javascript 更改的 DOM

windows - 在 Windows 中更改符号链接(symbolic link)的目标

c++ - InitializeCriticalSectionEx 不在 KERNEL32.Dll 中

同时选择发送和接收 channel

google-app-engine - 如何为 Google App Engine Go 开发设置 IntelliJ IDEA?

go - 如何清理 sync.map?