当前位置: > > > > 在命令提示符下执行时如何处理带引号和不带引号的字符串?
在命令提示符下执行时如何处理带引号和不带引号的字符串?
来源:stackoverflow
2024-05-01 08:45:40
0浏览
收藏
学习Golang要努力,但是不要急!今天的这篇文章《在命令提示符下执行时如何处理带引号和不带引号的字符串?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
问题内容
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 main
import (
"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\n不可运行的程序或批处理文件。\r\n”
“c:\program files (x86)\7-zip\7z.exe” x c:\temp\test.zip -oc:\temp\test – 我必须运行此命令在命令提示符下,但它只是执行突出显示的部分
由于输入字符串不是静态的(它来自 json),所以我们不能将它们拆分为参数
正确答案
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())
您可以使用原始字符串。查看。
var inputstring string = `"C:\Program Files (x86)\7-Zip\7z.exe" x c:\temp\test.zip -oc:\temp\test`
以上就是《在命令提示符下执行时如何处理带引号和不带引号的字符串?》的详细内容,更多关于的资料请关注米云公众号!
