本人 go 小白,在一个 go 程序中调用了 7z 的命令行版本来按照一定的规则批量压缩文件。
但是发现在调用过程中不打印 7z 的命令输出,比如压缩进度,压缩结果之类的。
压缩过程是一切正常的。
该怎么调用就像直接使用 7z 那样可以在控制台打印压缩过程呢? 新开个窗口再打印也是可以接受的。
下面是我的代码,其中注释的内容是尝试过的,并不好使。
execPath := ""
sysType := runtime.GOOS
if sysType == "windows" {
execPath = "D:\\Program Files\\7-Zip\\7z.exe"
} else if sysType == "darwin" {
execPath = "/usr/local/bin/7z"
}
compressCmd := exec.Command(execPath, args...)
compressCmd.Stderr = compressCmd.Stdout
/*
stdOut, stdOutErr := compressCmd.StdoutPipe()
if stdOutErr != nil {
fmt.Println("stdOut Error:", stdOutErr)
}
if err := compressCmd.Start(); err != nil {
fmt.Println("Compress Error:", err)
}
for {
tmp := make([]byte, 1024)
_, err := stdOut.Read(tmp)
fmt.Print(string(tmp))
if err != nil {
break
}
}
if waitErr := compressCmd.Wait(); waitErr != nil {
fmt.Println("compressCmd.Wait() Error", waitErr)
}
*/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.