如何修改BAT代码处理所有子文件夹的.md文件并添加指定头部内容?
批量给Obsidian MD文件添加YAML头部标签(递归处理子文件夹)
需求说明
需要修改原有Windows批处理脚本,实现两个目标:
- 将指定的YAML头部内容插入到所有子文件夹下的
.md文件开头 - 替换原有的
#unpolished标签为标准Obsidian YAML头部:
--- tags: unpolished aliases: cssclass: ---
解决方案(Windows批处理)
直接在文件开头插入内容需要借助临时文件实现,以下是完整脚本:
@echo off setlocal enabledelayedexpansion :: 定义要插入的YAML头部,^用于转义换行符 set "yaml=---^ tags: unpolished^ aliases:^ cssclass:^ ---^ " :: 递归遍历当前目录及所有子文件夹的.md文件 for /r %%f in (*.md) do ( :: 检查文件开头是否已有YAML分隔符---,避免重复插入 findstr /b /c:"---" "%%f" >nul if errorlevel 1 ( :: 创建临时文件,先写入YAML头部 echo !yaml! > "%%f.tmp" :: 追加原文件内容到临时文件 type "%%f" >> "%%f.tmp" :: 替换原文件(/y自动确认覆盖) move /y "%%f.tmp" "%%f" >nul echo 已处理: %%f ) else ( echo 已存在YAML头部,跳过: %%f ) ) endlocal pause
关键说明
for /r:递归遍历当前目录下所有子文件夹的.md文件enabledelayedexpansion:启用延迟变量扩展,确保多行YAML内容能正确赋值findstr /b /c:"---":检查文件开头是否已有YAML头部,避免重复插入- 临时文件机制:Windows批处理无法直接修改文件开头,通过先写YAML再追加原内容的方式实现头部插入
内容的提问来源于stack exchange,提问作者FiatMihi
相关产品推荐
相关产品推荐

