我不确定我的命令的哪部分不正确,但是输入以下内容时没有出现任何错误,只有一个使用页面:
/usr/bin/chm2pdf --book *.chm *.pdf
和
/usr/bin/chm2pdf --book *.chm [*.pdf]
更重要的是,我有一个包含 100 多个 .chm 文件的目录,我需要对其进行转换,但是在任何文档中实际上都没有提到批量转换,因此显然通配符可能不是可行的方法。
以下是我收到的信息:
#/usr/bin/chm2pdf --book *.chm [*.pdf]
Usage:
/usr/bin/chm2pdf [options] input_filename [output_filename]
Options:
...
更具体地说,我的问题是指批量转换,因为我使用上面的示例正确地转换单个 .chm 文件,并且在实用程序的描述中,批量转换显然是一个功能。
答案1
看起来你的语法是正确的,但是你需要遍历批处理作业的项目。
如果它们都在同一个文件夹中,那么像这个脚本一样简单的操作就可以起作用:
#!/usr/bin/env bash
for i in `find . -maxdepth 1 -type f -name "*.chm"`; do
/usr/bin/chm2pdf --book ${i} `echo ${i} | sed 's/.chm/.pdf/'`
done
这应该更接近您的需要。
解释一下:
1) 您将列出所有匹配的文件,类型为 *.chm,最大深度为 1 个文件夹(您所在的文件夹)。2
) 对于每个文件,运行/usr/bin/chm2pdf
以${i}
作为单个项目的名称。然后将输出文件的文件名从“whatever.chm”替换为“whatever.pdf”。3
) 然后完成。