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

标签 windows batch-file markdown pandoc

我环顾四周,发现的唯一答案是 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

但我还不能在命令提示符下或使用 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 的设置以适合您的情况。

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

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

就目前而言,仅当不存在具有相同名称部分的“已转换”文件时,代码才会执行​​转换。如果您想转换,请删除 if not exist...echo 之前.缺点是 pandoc 会转换 x.htmlx.md然后重新转换结果 x.mdx.html .

如果你想有两个批处理,只需复制文件并删除 *.md*.html来自 dir...适当的行。

关于windows - 在 Windows 中使用 pandoc 批量转换文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852067/

相关文章:

python - 当我从批处理文件和任务计划程序运行脚本时,子进程运行、check_output、Popen 返回空字符串

c# - 分配从 MSBuild 中的属性获取的参数值

html - 将 Markdown + CSS 转换为 .doc 或 .pdf

python - Windows : "can' t decode byte 0x8f"上的 closurebuilder.py 错误

java - JAVA 中的窗口句柄

windows - fsutil - setCaseSensitiveInfo 后不支持请求

javascript - 具有自定义预览的 WMD Markdown 编辑器

windows - 为什么dumpbin中可执行文件的入口点地址与WinDbg不同?

windows - 批处理文件功能执行时间过长

iphone - Markdown 到 NSAttributedString 库?