我对任何类型的脚本编写都毫无经验,如果这个问题太简单而不适合在这里回答,我深感抱歉。
我发现了 zenity,我认为它非常有用,因为我的记忆力很差,所以如果它不在菜单中(例如命令行应用程序),那么我就会忘记我有它们,或者只是忘记如何使用它们。
所以无论如何。
pdftotext 是我现在拥有的一个应用程序,我可以想象到将来我会经常使用它。因此,我使用一个 shell 脚本调用 zenity,以便能够将 pdftotext 粘贴到菜单中,然后它就运行起来了。
我想开玩笑地说我很聪明,所以如果我可以让输出文本文件($szSavePath)自动在末尾标记“.txt”就好了。
甚至可以拾取原始文件名 ($file),去掉 .pdf 并将其替换为 .txt 作为输出名称。
可以做吗?
#!/bin/bash
file="$(zenity --title "PDF to Text: Select a File to convert" --file-selection)"
szSavePath=$(zenity --file-selection --save --confirm-overwrite);echo $szSavePath
pdftotext "$file" $szSavePath
答案1
如果file
包含foo.pdf
,则可以剥离.pdf
使用${file%%.pdf}
。
使用szSavePath
,您可以测试它是否包含.txt
,如果不包含,则添加它:
szSavePath=$(zenity --file-selection --save --confirm-overwrite)
[[ $szSavePath != *.txt ]] && szSavePath="$szSavePath.txt"
您可以使用以下选项提供 PDF 的文件名.txt
作为.pdf
默认文件名--filename
:
szSavePath=$(zenity --file-selection --save --confirm-overwrite --filename="${file%%.pdf}.txt")
另外,请记住引用您的变量,以便带有空格和其他特殊字符的文件名不会导致问题:
pdftotext "$file" "$szSavePath"