在 Windows 中使用 Exec 包执行带双引号参数的 Find 命令
在 Windows 中执行带双引号参数的 find 命令时使用 exec 包时,用户可能会遇到由于 Windows shell 意外转义而导致的问题。要解决此问题,需要修改 exec.Command 结构体的 SysProcAttr 字段。
以下代码片段提供了解决方法:
<code class="go">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) }</code>
通过直接在 SysProcAttr 中设置 CmdLine,我们绕过了 exec 包执行的默认参数解析,允许我们完全按照我们想要的方式指定命令行,包括双引号参数。不幸的是,这个解决方案需要直接操作 syscall.SysProcAttr 类型,该类型没有详细记录。但是,它提供了一种在 Windows 环境中使用所需参数执行 find 命令的可靠方法。
以上是如何在 Windows 中使用“exec”包执行带双引号参数的“find”命令?的详细内容。更多信息请关注PHP中文网其他相关文章!