2015-01-09 50 views
2

我环顾四周,我发现唯一的答案是pandoc(如果有人知道任何程序与一个用户界面,可以做到这一点,这将是伟大的)。批量转换文件与在Windows中的pandoc

如果不是我想要做的是在一个目录中有两个bat文件,一个可以将目录中的所有文件和任何子目录从markdown转换为HTML,另一个转换回来。

我只是没有得到如何获得在命令提示符下工作的“for in”递归工具(noob here)。我如何将单个文件转换,并从与pandoc例子:

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

或向后:

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

,但我还没有能够做到批次无论是在命令提示符或与一个bat文件。谷歌搜索它,从这里得到了几个类似的问题,我试图修改几个答案,我仍然无法管理它。

如果有人能给我它应该在的基本格式,我真的很感激它。

+0

请注意,从HTML转换到Markdown将无法完美工作,因为HTML在语义上比Markdown更丰富。 – Chris

+1

尝试向我们展示一个示例,通过将它们编辑到您的问题中,将其转换为html-to-markdown命令和convert-from-markdown-to-html命令。这告诉我们你已经完成了你的声明,你已经证明了你的机器上的文件的工作方式。还请编辑你的电话以获得其他产品推荐 - 它邀请自以为是的“语言战争” – Magoo

+0

我打算只将html转换回md。我知道有限制,但它确实可以满足我的需要。 – bythelake

回答

1
@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的设置以适合您的情况。

这个程序会做什么只是echopandoc命令到屏幕。这是为了让你看到在实际执行之前会执行什么。这使得文件名包含空格 - 要你相信他们是正确的简单地改变echo pandocpandoc

我认为pandoc将处理"quoted filenames"后实际执行的命令

就其本身而言,只有在尚未存在具有相同名称部分的“转换”文件时,代码才会执行​​转换。如果要不管怎样转换,请在echo之前删除if not exist...。不利的一面是pandoc会将x.html转换为x.md,然后将结果x.md重新转换为x.html

如果您想要分两批,只需复制文件并根据需要从dir...行中删除*.md*.html

+0

工作就像一个魅力。谢谢。 – bythelake