本文目录导读:

我可以为您提供几种批量转换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批量转换需求,您可以根据具体需求选择合适的方式。