首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在cmd终端中执行命令时使用正则表达式时和在golang中执行cmd命令时有不同的结果?

为什么在cmd终端中执行命令时使用正则表达式时和在golang中执行cmd命令时有不同的结果?
EN

Stack Overflow用户
提问于 2022-09-02 13:35:41
回答 1查看 42关注 0票数 1

在cmd终端中执行命令和在golang中执行cmd命令的两个不同结果。

cmd

代码语言:javascript
运行
复制
C:\Users\Administrator>cmd /c tasklist | findstr /R /I "\<cmd.exe\>"
cmd.exe                       4852 Console                    1      5,676 K
cmd.exe                      11736 Console                    1      4,836 K

戈朗

代码语言:javascript
运行
复制
func main() {
    cmd := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "cmd.exe")
    output, err := cmd.Output()
    if err != nil {
        panic(err)
    }
    fmt.Println(string(output))

    // Use regular filtering
    cmd2 := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "\\<cmd.exe\\>")
    output, err = cmd2.Output()
    if err != nil {
        panic(err)
    }
    fmt.Println(string(output))
}

result:
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_demo_go.exe
cmd.exe                       4852 Console                    1      5,380 K
cmd.exe                      11816 Console                    1      5,044 K

panic: exit status 1
EN

回答 1

Stack Overflow用户

发布于 2022-09-03 16:45:25

感谢您的好意答复。最后,我以这样的方式解决了这个问题:

代码语言:javascript
运行
复制
cmd := exec.Command("cmd.exe", "/C", "tasklist", "|", "findstr", "/R", "/I", "cmd.exe")
output, _ := cmd.Output()
fmt.Println(string(output))
//***************************************************************************//
cmd1 := exec.Command("cmd.exe", "/C", "tasklist")
cmd2 := exec.Command("findstr", "/R", "/I", "\\<cmd.exe\\>")
cmd2.Stdin, _ = cmd1.StdoutPipe()
cmd1.Start()
data, _ := cmd2.Output()
cmd1.Wait()
fmt.Println(string(data))

result:

Result of regular expression not used
cmd.exe                       5188 Console                    1      6,184 K
cmdcmd.exe                    1260 Console                    1      4,980 K

Results of using regular expressions
cmd.exe                       5188 Console                    1      6,184 K

虽然第二种方式有点麻烦,但它确实很有用。我想知道是否有更好的方法?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73583430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档