exec.command 执行命令报错: unrecognized token: "".read", 怀疑exec包的bug

该命令直接在终端运行是可以的### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

newDbName="C:\\Users\\ma\\Desktop\\sqlite3\\malformed\\root\\test.db"
path = "C:\\Users\\ma\\Desktop\\sqlite3\\malformed\\root"
dmt := fmt.Sprintf("/c %s&cd %s&sqlite3.exe %s \".read tmp.sql\"", path[0:2], path, newDbName)
cmd := exec.Command("cmd.exe", dmt)
out1, err := cmd.CombinedOutput()
if err != nil{
    fmt.Println(err)
}

不用转义符也不行。

newDbName = "C:\\Users\\ma\\Desktop\\sqlite3\\malformed\\root\\test.db"
path = "C:\\Users\\ma\\Desktop\\sqlite3\\malformed\\root"
dmt := fmt.Sprintf(`%s&cd %s&sqlite3.exe %s ".read tmp.sql"`, path[0:2], path, newDbName)
cmd := exec.Command("cmd.exe", dmt)
out1, err := cmd.CombinedOutput()
if err != nil{
    fmt.Println(err)
}

你期待的结果是什么?实际看到的错误信息又是什么?

本来是要输出test.db文件,倒是报错了, unrecognized token: "".read"

cmd打印出來是這樣的:C:\windows\system32\cmd.exe /c C:\Users\ma\Desktop\sqlite3\malformed\root\sqlite3.exe C:\Users\ma\Desktop\sqlite3\malformed\ root\test.db ".read tmp.sql"

阅读 2.8k
1 个回答
✓ 已被采纳新手上路,请多包涵
read := ".read tmp.sql"
cmd := exec.Command("cmd.exe", "/c", "cd", tmpPath, "&", sql3, newDbName, read)
推荐问题