如何根据CSV前两列提取内容生成对应路径的独立HTML文件
CSV批量提取生成对应目录结构文件修复方案
原有脚本问题说明
- 未配置目标根目录变量,没有按第一列User值创建对应子文件夹,输出路径完全不符合要求
- 循环读取CSV行时仅提取了第二列字段,没有拆分三列内容,直接把整行CSV数据写入文件,没有单独提取第三列的HTML内容
- 原有逻辑错误写入了CSV表头到生成文件,不符合需求(需求中文件内容仅需要第三列的HTML内容)
修正后可直接运行的批处理脚本
@echo off setlocal enabledelayedexpansion :: 配置源文件路径和输出根目录 set "source_file=C:\TestDirectory\Parse.csv" set "output_root=D:\ResultsDirectory" :: 输出根目录不存在则自动创建 if not exist "%output_root%" md "%output_root%" :: 跳过第一行表头,逐行处理CSV内容 for /f "usebackq skip=1 delims=" %%a in ("%source_file%") do ( set "line=%%a" :: 按逗号拆分三列内容,分别对应用户名、文件名、HTML内容 for /f "tokens=1,2,* delims=," %%b in ("!line!") do ( :: 去除字段前后多余空格 set "user=%%b" set "user=!user: =!" set "filename=%%c" set "filename=!filename: =!" set "html_content=%%d" :: 对应用户子目录不存在则创建 set "user_dir=%output_root%\!user!" if not exist "!user_dir!" md "!user_dir!" :: 拼接最终html文件路径,写入HTML内容 set "target_file=!user_dir!\!filename!.html" echo !html_content!>"!target_file!" ) ) pause endlocal
关键改动说明
- 新增
output_root变量配置输出根目录,处理每行数据时自动提取第一列用户名作为子目录名,目录不存在时自动创建,自动拼接根目录\用户名\文件名.html的完整目标路径 - 调整for循环的tokens参数为
1,2,*,一次性拆分三列内容:第一列对应用户名、第二列对应文件名、第三列(*匹配逗号后所有剩余内容,避免HTML内容里含逗号导致截断)对应要写入的HTML内容 - 增加字段前后空格去除逻辑,避免CSV列间空格导致目录名、文件名带多余空格
- 移除原有错误写入表头的逻辑,仅将第三列的HTML内容写入目标文件
- 开启延迟扩展,避免循环内变量取值异常问题
注意:如果HTML内容本身包含感叹号,需要额外调整延迟扩展的开关时机避免内容被转义,常规无特殊符号的HTML内容可以直接用上述脚本运行。
内容的提问来源于stack exchange,提问作者Graeme White
相关产品推荐
相关产品推荐

