在 windows 中使用 pandoc 批量转换文件
Batch convert files with pandoc in windows
我环顾四周,发现的唯一答案是 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 pandoc
更改为 pandoc
我假设 pandoc
将处理 "quoted filenames"
- 它允许文件名包含空格。
就目前而言,仅当不存在具有相同名称部分的 "converted" 文件时,代码才会执行转换。如果无论如何都想转换,请删除 echo
之前的 if not exist...
。缺点是 pandoc 会将 x.html
转换为 x.md
然后将结果 x.md
重新转换为 x.html
.
如果您想要两个批次,只需复制文件并根据需要从 dir...
行中删除 *.md
或 *.html
。
我环顾四周,发现的唯一答案是 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 pandoc
更改为 pandoc
我假设 pandoc
将处理 "quoted filenames"
- 它允许文件名包含空格。
就目前而言,仅当不存在具有相同名称部分的 "converted" 文件时,代码才会执行转换。如果无论如何都想转换,请删除 echo
之前的 if not exist...
。缺点是 pandoc 会将 x.html
转换为 x.md
然后将结果 x.md
重新转换为 x.html
.
如果您想要两个批次,只需复制文件并根据需要从 dir...
行中删除 *.md
或 *.html
。