脚本如何批量转换Markdown格式

wen 实用脚本 1

本文目录导读:

脚本如何批量转换Markdown格式

  1. 使用Python脚本(推荐)
  2. 使用Pandoc命令行工具
  3. Windows PowerShell脚本
  4. 使用Node.js脚本
  5. 批量转换其他格式
  6. 安装依赖

我可以为您提供几种批量转换Markdown文件的方法,以下是常用的脚本解决方案:

使用Python脚本(推荐)

import os
import glob
import markdown
from pathlib import Path
def convert_md_to_html(input_dir, output_dir):
    """批量将Markdown文件转换为HTML"""
    # 确保输出目录存在
    Path(output_dir).mkdir(parents=True, exist_ok=True)
    # 获取所有.md文件
    md_files = glob.glob(os.path.join(input_dir, "*.md"))
    for md_file in md_files:
        # 读取Markdown文件
        with open(md_file, 'r', encoding='utf-8') as f:
            md_content = f.read()
        # 转换为HTML
        html_content = markdown.markdown(md_content, extensions=['extra', 'codehilite'])
        # 生成输出文件名
        output_file = os.path.join(output_dir, 
                                   Path(md_file).stem + '.html')
        # 写入HTML文件
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(f'''<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{Path(md_file).stem}</title>
</head>
<body>
{html_content}
</body>
</html>''')
        print(f"转换完成: {md_file} -> {output_file}")
# 使用示例
convert_md_to_html("./markdown_files", "./html_output")

使用Pandoc命令行工具

#!/bin/bash
# 批量转换脚本 (Linux/Mac)
INPUT_DIR="./markdown"
OUTPUT_DIR="./output"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 批量转换所有.md文件
for file in "$INPUT_DIR"/*.md; do
    if [ -f "$file" ]; then
        filename=$(basename "$file" .md)
        echo "转换中: $file"
        pandoc "$file" -o "$OUTPUT_DIR/$filename.html"
    fi
done
echo "批量转换完成!"

Windows PowerShell脚本

# PowerShell批量转换脚本
$inputDir = ".\markdown"
$outputDir = ".\output"
# 创建输出目录
New-Item -ItemType Directory -Force -Path $outputDir
# 获取所有.md文件
$files = Get-ChildItem -Path $inputDir -Filter "*.md"
foreach ($file in $files) {
    $outputFile = Join-Path $outputDir ($file.BaseName + ".html")
    Write-Host "正在转换: $($file.Name)"
    # 使用pandoc转换
    pandoc $file.FullName -o $outputFile
}
Write-Host "批量转换完成!"

使用Node.js脚本

// npm install marked fs-extra glob
const fs = require('fs-extra');
const glob = require('glob');
const marked = require('marked');
const path = require('path');
async function batchConvertMarkdown(inputDir, outputDir) {
    // 确保输出目录存在
    await fs.ensureDir(outputDir);
    // 查找所有.md文件
    const files = glob.sync(`${inputDir}/**/*.md`);
    for (const file of files) {
        try {
            // 读取Markdown内容
            const mdContent = await fs.readFile(file, 'utf-8');
            // 转换为HTML
            const htmlContent = marked.parse(mdContent);
            // 生成输出路径
            const relativePath = path.relative(inputDir, file);
            const outputPath = path.join(
                outputDir,
                relativePath.replace('.md', '.html')
            );
            // 确保输出目录存在
            await fs.ensureDir(path.dirname(outputPath));
            // 写入HTML文件
            await fs.writeFile(outputPath, htmlContent);
            console.log(`转换成功: ${file} -> ${outputPath}`);
        } catch (error) {
            console.error(`转换失败: ${file}`, error);
        }
    }
}
// 使用示例
batchConvertMarkdown('./markdown', './output');

批量转换其他格式

# 转换为其他格式的示例
import subprocess
import os
def batch_convert_pandoc(input_dir, output_dir, input_format="md", output_format="pdf"):
    """使用Pandoc批量转换格式"""
    os.makedirs(output_dir, exist_ok=True)
    for file in os.listdir(input_dir):
        if file.endswith(f".{input_format}"):
            input_path = os.path.join(input_dir, file)
            output_path = os.path.join(output_dir, 
                                     file.replace(f".{input_format}", f".{output_format}"))
            cmd = f"pandoc {input_path} -o {output_path}"
            subprocess.run(cmd, shell=True)
            print(f"转换完成: {file}")
# 使用示例:MD转PDF
batch_convert_pandoc("./md_files", "./pdf_output", "md", "pdf")

安装依赖

Python方式:

pip install markdown

Pandoc方式:

  • Linux: sudo apt-get install pandoc
  • Mac: brew install pandoc
  • Windows: 下载安装包

Node.js方式:

npm install marked fs-extra glob

这些脚本可以满足常见的Markdown批量转换需求,您可以根据具体需求选择合适的方式。

抱歉,评论功能暂时关闭!