如何用批处理脚本将CSV第2列≤6位数值移至新增第3列
批处理脚本实现CSV列数据迁移需求
实现思路
- 用批处理
for /f命令逐行读取CSV文件,按逗号分隔解析每列数据 - 判断第2列数值大小:若小于1000000(6位及以下),则将该值移至新增的第3列,原第2列留空;否则保留原第2列数值,新增第3列留空
- 保留其余列原始内容,确保输出CSV结构完整(共9列:原8列+新增第3列)
批处理脚本代码
@echo off setlocal enabledelayedexpansion :: 定义输入输出文件名,可根据实际修改 set "input=input.csv" set "output=output.csv" :: 处理表头行,新增第3列空标题 set "header=" for /f "delims=" %%a in ('findstr /n "^" "%input%" ^| findstr "^1:"') do ( set "line=%%a" set "line=!line:*:=!" for /f "tokens=1,2,* delims=," %%b in ("!line!") do ( set "header=%%b,,%%c" ) echo !header!>"%output%" ) :: 处理数据行 for /f "skip=1 delims=" %%a in ('findstr /n "^" "%input%"') do ( set "line=%%a" set "line=!line:*:=!" for /f "tokens=1,2,* delims=," %%b in ("!line!") do ( set "rest=%%d" :: 数值判断分支 if %%b lss 1000000 ( echo ,%%b,!rest!>>"%output%" ) else ( echo %%b,,!rest!>>"%output%" ) ) ) echo 处理完成,结果已保存至%output% endlocal
使用说明
- 将脚本保存为
process_csv.bat - 把需处理的CSV文件命名为
input.csv,和脚本放在同一目录 - 双击运行脚本,处理后的结果会生成在
output.csv中
示例验证
原始CSV数据(input.csv)
列1,列2,列3,列4,列5,列6,列7,列8 A,12345,val3,val4,val5,val6,val7,val8 B,1234567,val3,val4,val5,val6,val7,val8 C,999999,val3,val4,val5,val6,val7,val8
处理后目标数据(output.csv)
列1,,列3,列4,列5,列6,列7,列8 A,12345,val3,val4,val5,val6,val7,val8 B,1234567,,val3,val4,val5,val6,val7,val8 C,999999,val3,val4,val5,val6,val7,val8
注意:该脚本适用于无复杂格式的标准CSV文件,若字段包含逗号且用引号包裹,需额外修改适配逻辑。
内容的提问来源于stack exchange,提问作者Svenfabian
相关产品推荐
相关产品推荐

