在Windows系统中使用Pandoc批量转换文件

4
我找到的唯一答案是pandoc(如果有人知道任何可以批量执行此操作的带ui程序,那就太好了)。如果没有,我想做的是在一个目录中有两个bat文件,一个用于将目录中和所有子目录中的所有文件从markdown转换为HTML,另一个用于还原。我不知道如何在命令提示符中使“for in”递归工作(这里是新手)。我已经理解了pandoc的示例如何单独转换文件的方法。
pandoc test.md -f markdown -t html -o test.html

或者反过来:

pandoc test.html -f html -t markdown -o test.md

但我还没有能够在命令提示符或批处理文件中批量处理。我在谷歌上搜索了一下,找到了几个类似的问题,尝试修改了几个答案,但仍然无法解决。

如果有人能告诉我应该使用什么格式,我将不胜感激。


请注意,从HTML转换为Markdown不会完美地工作,因为HTML比Markdown语义更丰富。 - Chris
1
请尝试编辑一个包含将HTML转换为Markdown的命令示例以及将Markdown转换为HTML的命令示例。这向我们展示了您已经按照所声称的方式在您的计算机上成功转换文件。请同时删除您对其他产品建议的呼吁 - 这会引发有争议的“语言战”。 - Magoo
我计划只将我已经转换回md格式的html放回去。我知道有限制,但它确实可以满足我的需求。 - bythelake
我添加了前后代码示例。我不确定你所说的“有偏见的语言战”是什么意思。我真的找不到其他选择,除了pandoc,而这与语言无关... 困惑 我编辑了一下,以明确我正在寻找一个更简单的带有UI的批量转换工具,因为我发现除了pandoc之外没有别的东西,而据我所知,它是一个命令行程序。如果你仍然希望我将其编辑掉,我可以这样做,但我不明白它会引起任何争论... - bythelake
1
还可以在这里查看 https://dev59.com/jnPYa4cB1Zd3GeqPimwy - Avatar
1个回答

4
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
PUSHD "%sourcedir%"
FOR /f "delims=" %%a IN (
 'dir /b /s /a-d *.md *.html '
 ) DO (
 IF /i "%%~xa"==".md" (
  IF NOT EXIST "%%~dpna.html" ECHO pandoc "%%a" -f markdown -t html -o "%%~dpna.html"
 ) ELSE (
  IF NOT EXIST "%%~dpna.MD" ECHO pandoc "%%a" -f html -t markdown -o "%%~dpna.MD"
 )
)
popd
GOTO :EOF

您需要根据自己的情况更改sourcedir的设置。此过程将简单地echo pandoc命令到屏幕上,以便您在实际执行之前查看将要执行的内容。如果您确定命令正确,只需将echo pandoc更改为pandoc即可实际执行命令。我假设pandoc可以处理"quoted filenames",这允许文件名包含空格。目前,只有在不存在具有相同名称部分的“converted”文件时,代码才会执行转换。如果您想无论如何都进行转换,请在echo之前删除if not exist...。缺点是pandoc将把x.html转换为x.md,然后重新将结果x.md转换为x.html。如果您想要两个批处理程序,请复制该文件并从适当的dir...行中删除*.md*.html

运行得非常好,谢谢。 - bythelake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接