我环顾四周,我找到的唯一答案是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文件中进行批处理。谷歌搜索它,从这里得到几个类似的问题,我试图为我修改一些答案,但仍然无法管理它。
如果有人能给我它应该的基本格式,我真的很感激。
@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
行中删除*.html
或dir...
。