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

zis*_*los 6 windows bash markdown cmd pandoc

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

#!/bin/bash 
pandoc *.md > final.md
Run Code Online (Sandbox Code Playgroud)

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

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

并且final.md文件是空的。

如果我尝试这个:

pandoc file1.md file2.md .... final.md 
Run Code Online (Sandbox Code Playgroud)

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

在 macOS 上它运行良好。为什么这在 Windows 上不起作用?

Chr*_*ris 2

在类 Unix shell(如 bash,您的脚本是为其编写的)上,全局扩展(例如变成*.mdfile1.md file2.md file3.md由 shell 执行的,而不是您正在运行的应用程序。您的应用程序看到的是最终的文件列表,而不是通配符。

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

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

因此,*.md当 Pandoc 希望看到file1.md file2.md file3.md. 它不知道如何扩展 glob 本身,并尝试打开一个名为*.md.

您应该能够在类似 UNIX 的 shell 中运行 bash 脚本,例如 Cygwin 或Windows 上的 bash。它也可以在 PowerShell 上运行,尽管我没有方便测试的机器。作为最后的手段,您可以跳过一些步骤来编写一个批处理文件来扩展 glob 并将文件名传递给 Pandoc。

  • 这适用于 PowerShell:`pandoc (get-item *.md).FullName -o Final.md` (6认同)