在Windows上使用Pandoc连接多个Markdown文件

时间:2018-04-23 10:32:53

标签: windows bash cmd markdown pandoc

我在文件夹中有几个Markdown(.md)文件,我想连接它们并使用Pandoc获取最终的Markdown文件。我写了一个像这样的bash文件:

#!/bin/bash 
pandoc *.md > final.md

但是当我双击它时出现以下错误:

  

pandoc:* .md:openBinaryFile:无效参数(无效参数)

并且final.md文件为空。

如果我试试这个:

pandoc file1.md file2.md .... final.md 

我得到了我期望的结果:final.md文件,其中包含所有其他Markdown文件的内容。

在macOS上它运行正常。为什么这不适用于Windows?

1 个答案:

答案 0 :(得分:0)

在类Unix的shell上(比如你的脚本编写的bash),glob扩展(例如将*.md转换为file1.md file2.md file3.md)是performed by the shell,而不是你正在运行的应用程序。您的应用程序会看到最终的文件列表,而不是通配符。

但是,cmd.exe中的glob扩展是由应用程序执行的:

  

Windows命令解释器cmd.exe依赖于应用程序中的运行时函数来执行通配。

因此,当Pandoc希望查看*.md等文件列表时,会传递文字file1.md file2.md file3.md。它不知道如何扩展glob本身并尝试打开名为*.md的文件。

您应该能够在像Cygwin或bash on Windows这样的类似unix的shell中运行bash脚本。它也可以在PowerShell上运行,但我没有便于测试的机器。作为最后的手段,您可以jump through some hoops编写一个扩展glob并将文件名传递给Pandoc的批处理文件。