使用中发现,很多时候比不想手动维护最底层的index.md,还是像使用工具快速生成
当前文件夹下有 多个md文件,如:index.md, 问题.md,解决.md,判断当前文件夹下,是否有非index.md的其他md文件。若有,将这些文件,列入新的index.md中
@echo off
setlocal enabledelayedexpansion
:: 设置当前目录
set "current_dir=%cd%"
set "output_file=%current_dir%\index.md"
:: 初始化 index.md 文件
> "%output_file%" echo # Index of %current_dir%
:: 遍历当前目录的所有 .md 文件,排除 index.md
for /f "delims=" %%D in ('dir /b /a:-d /o-n "%current_dir%\*.md"') do (
if /i not "%%D"=="index.md" (
set "file_name=%%~nxD"
echo - [!file_name!](%%D) >> "%output_file%"
)
)
echo 已生成: "%output_file%"
pause
> "%output_file%" echo # Index of %current_dir%
for /f "delims=" %%D in ('dir /b /a:-d /o-n "%current_dir%\*.md"') do (
dir /b /a:-d /o-n "%current_dir%\*.md":if /i not "%%D"=="index.md" (
/i:忽略大小写比较。set "file_name=%%~nxD"
echo - [!file_name!](%%D) >> "%output_file%"
在批处理脚本中,if else if 语句可以通过多个 if 语句嵌套实现,因为批处理脚本本身不支持直接的 else if 语法。以下是一个示例:
if "%var%"=="value1" (
echo 条件1满足
) else if "%var%"=="value2" (
echo 条件2满足
) else (
echo 条件都不满足
)
else if 实际上是通过 else 后紧跟另一个 if 实现的。else 和 if 必须在同一行,且 else 前后需要有空格。setlocal enabledelayedexpansion 时,变量需要用 !var! 而不是 %var%。通过这种方式,可以实现类似于其他编程语言中的 if else if 逻辑。
@echo off
setlocal enabledelayedexpansion
:: 示例调用
call :generate_index_recursive "%target_dir%" "%output_file%"
exit /b
:: 定义函数
:generate_index_recursive
set "target_dir=%~1"
set "output_file=%~2"
echo 处理目录: !target_dir!
echo 输出文件: !output_file!
:: 在此处添加处理逻辑
:: ...
exit /b
call :generate_index_recursive "%target_dir%" "%output_file%":
%~1 和 %~2 分别表示传递的第一个和第二个参数。set "target_dir=%~1":获取第一个参数。set "output_file=%~2":获取第二个参数。exit /b 退出函数,返回到调用点。