在窗口中使用潘多克批量转换文件



我环顾四周,我找到的唯一答案是 pandoc(如果有人知道任何带有 UI 的程序可以批量执行此操作,那就太好了)。

如果不是,我想做的是在一个目录中有两个蝙蝠文件,一个能够将目录中的所有文件和任何子目录从 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

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

如果有人能给我它应该采用的基本格式,我将不胜感激。

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

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

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

目前而言,仅当不存在具有相同名称部分的"转换"文件时,代码才会执行转换。如果要无论如何进行转换,请删除echo之前的if not exist...。缺点是 pandoc 会将x.html转换为 x.md然后将生成的x.md重新转换为 x.html

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

最新更新