在Windows中使用pandoc批量转换文件

问题描述 投票:3回答:1

我环顾四周,我找到的唯一答案是pandoc(如果有人知道任何带有ui的程序可以批量执行此操作会很棒)。

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

我只是不知道如何在命令提示符(noob here)中使用“for in”递归的东西。我得到了如何使用pandoc中的示例转换单个文件:

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

或倒退:

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

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

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

windows batch-file markdown pandoc
1个回答
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的设置以适合您的具体情况。

这个程序将做的是简单地echo pandoc命令到屏幕。这是为了让您在实际执行之前查看将执行的内容。要在确定它们是正确的之后实际执行命令,只需将echo pandoc更改为pandoc

我假设pandoc将处理"quoted filenames" - 它允许文件名包含空格。

按照目前的情况,代码只有在尚未存在具有相同名称部分的“已转换”文件时才会执行转换。如果你想转换,请在if not exist...之前删除echo。下行将是pandoc将x.html转换为x.md然后将得到的x.md重新转换为x.html

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

© www.soinside.com 2019 - 2024. All rights reserved.