首页 > 后端开发 > Golang > 正文

如何使用 exec 包在 Windows 上执行带有双引号参数的命令?

Patricia Arquette
发布: 2024-10-31 10:33:40
原创
623 人浏览过

How to Execute Commands with Double-Quoted Arguments on Windows Using the exec Package?

在 Windows 上执行带有双引号参数的命令

当在 Windows 上使用 exec 包执行带有双引号参数的命令时,Windows 可能会解释引号标记为命令而不是分隔符。这可能会导致意外的行为和错误。

例如,以下代码片段尝试使用双引号参数执行 find 命令:

out, err := exec.Command("find", `"SomeText"`).Output()
登录后复制

但是,在 Windows 上,此将导致执行以下命令:

find /SomeText"
登录后复制

引号被解释为命令的一部分,而不是分隔参数。

要解决此问题并正确执行查找使用 exec 包在 Windows 上运行命令,可以使用以下方法:

<code class="go">package main

import (
    "fmt"
    "os"
    "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 字段来查找“SomeText”test.txt,命令将在双引号参数完好无损的情况下执行。

这种方法允许将双引号参数正确传递给命令,从而导致想要在 Windows 上执行。

以上是如何使用 exec 包在 Windows 上执行带有双引号参数的命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!