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

Windows命令行在Golang中参数中附加引号

Windows命令行在Golang中参数中附加引号

Go
开满天机 2021-08-16 16:09:53
我想在 Windows(带有 Go 1.3.1 的 Windows 8.1)中编写一个批处理助手来使用 exiftool.exe。我在 Go 中运行命令行的原因是我试图访问一些我从其他 Web 端检索的 EXIF 信息。我只想写回图片EXIF。这是我的代码段。        str_abs, _ := filepath.Abs(target_path)        str_title := fmt.Sprintf("-title=\"%s\"", ext_str)        stdout, err := exec.Command("cmd", "/c", "exiftool.exe", str_title, "-E", str_abs).Output()但是我发现参数中总是有一个附加引号,因此结果将与:exiftool.exe -title=""TITLE"" -E TARGET_FILE知道它是怎么发生的吗?或有关如何处理这样的参数的任何建议。笔记:之所以我把参数和字符串分开,又把它组合起来,是因为命令行需要使用unicode字符串,比如Chinese String。exiftool.exe 仅适用于带有“&#%d;”的命令行 在 Windows 中使用汉字编码,所以我对此做了更多处理。如果我使用非 unicode 也会发生错误,例如(标题显示“1234”而不是 1234)    stdout, err := exec.Command("cmd", "/c", "exiftool.exe", "-title", "1234", str_abs).Output()错误代码:运行命令错误:退出状态 1。-----更新@VonC 2014/09/10----------------------------------- --------------嗨,VonC,我试图做与您提供的代码相同的事情,但它对我不起作用。我对命令行代码页很好奇,我在 477(US) 950 (Big5) 中尝试过,两者都不适合我。有两件事我想讨论。中文字必须改成&#%d; 否则会错误显示。例如:世界 -> 世界检查这个错误的编码图片是否有编码显示错误。即使我尝试过,但它仍然在我的图片标题中显示额外的“。参考这个额外的报价图片。我的代码示例如下:output, err := exec.Command(`d:\exiftool.exe`,`-title="test 2世界"`,//If it not trasnfer from 世界 -> 世界  it could not display correctly."-E", "test.jpg").CombinedOutput()if err != nil {    fmt.Println(err.Error())}fmt.Println(string(output))
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

fmt.Printf("%q", "somestring") => "somestring"


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

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