为了账号安全,请及时绑定邮箱和手机立即绑定

在命令提示符下执行时如何处理带引号和不带引号的字符串?

在命令提示符下执行时如何处理带引号和不带引号的字符串?

Go
互换的青春 2022-10-24 16:55:39
input comes from an JSON request which looks like{    "inputString" : "\"C:\\Program Files (x86)\\7-Zip\\7z.exe\" x c:\\temp\\test.zip -oc:\\temp\\test" }package mainimport (    "fmt"    "os/exec")func main() {    //Input received will be of this format    var inputstring string = "\"C:\Program Files (x86)\7-Zip\7z.exe\" x c:\temp\firmware8.zip -oc:\temp\fw"    cmd := exec.Command("cmd", "/c", inputstring)    out, err := cmd.Output()    fmt.Println("doneee", string(out), "err", err)}输出 : "'\"C:\Program Files (x86)\7-Zip\7z.exe\"'未被识别为内部或外部命令,\r\不可运行的程序或批处理文件。\r\n""C:\Program Files (x86)\7-Zip\7z.exe" xc:\temp\test.zip -oc:\temp\test - 我必须在命令提示符下运行此命令,但它只是在执行部分突出显示由于输入字符串不是静态的(它来自 JSON),所以我们不能将它们拆分为参数
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以使用原始字符串。看看这个教程

var inputstring string = `"C:\Program Files (x86)\7-Zip\7z.exe" x c:\temp\test.zip -oc:\temp\test`


查看完整回答
反对 回复 2022-10-24
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

var inputstring string = "\"C:\\Program Files (x86)\\7-Zip\\7z.exe\" x c:\\temp\\firmware8.zip -oc:\\temp\\fw"

var buf, stderr bytes.Buffer

*proc := exec.Command("cmd")

proc.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c "%s"`, inputstring)}* //Adding this line helped to add the cmd as single line


proc.Stderr = &stderr

proc.Stdout = &buf

proc.Start()

time.Sleep(5 * time.Second)

fmt.Println("doneee", buf.String(), "error is ", stderr.String())


查看完整回答
反对 回复 2022-10-24
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信