Windows命令行下EPUB转TXT并保留换行格式的方法求助
解决方案:批量将EPUB转换为保留换行格式的TXT
方法一:使用Calibre命令行工具(推荐,复用GUI的有效转换逻辑)
既然Calibre GUI的转换效果符合你的需求,它的命令行工具ebook-convert可以完全复用相同的格式保留逻辑,且资源占用更低,适合批量处理。
单文件转换命令
ebook-convert input.epub output.txt --keep-lines
--keep-lines参数会精准保留EPUB中<p><br/></p>定义的换行格式。
批量处理脚本
Linux/macOS(Bash)
创建batch_convert.sh文件:
#!/bin/bash for epub_file in *.epub; do txt_file="${epub_file%.epub}.txt" ebook-convert "$epub_file" "$txt_file" --keep-lines done
赋予执行权限后运行:
chmod +x batch_convert.sh ./batch_convert.sh
Windows(批处理)
创建batch_convert.bat文件:
@echo off for %%f in (*.epub) do ( ebook-convert "%%f" "%%~nf.txt" --keep-lines )
双击即可批量转换当前目录下所有EPUB文件。
方法二:Pandoc配合Lua过滤器
如果坚持使用Pandoc,需要通过Lua过滤器识别<p><br/></p>元素,强制保留换行。
步骤1:创建过滤器文件preserve_breaks.lua
function Para(p) -- 检测仅包含换行符的段落 if #p.content == 1 and p.content[1].t == "LineBreak" then -- 返回两个换行符匹配原格式 return pandoc.Para{pandoc.LineBreak(), pandoc.LineBreak()} end return p end
步骤2:执行转换命令
pandoc -f epub -t plain --lua-filter=preserve_breaks.lua --wrap preserve -o output.txt input.epub
批量处理脚本(Bash)
#!/bin/bash for epub_file in *.epub; do txt_file="${epub_file%.epub}.txt" pandoc -f epub -t plain --lua-filter=preserve_breaks.lua --wrap preserve -o "$txt_file" "$epub_file" done
内容的提问来源于stack exchange,提问作者mysther
相关产品推荐
相关产品推荐

