CMD操作:如何将单列多行文件转置为3列结构化CSV表格
单列属性转3列结构化表格实现方案
下面提供两种可行实现方案,可根据你的使用场景选择:
方案1:直接修改原有批处理,生成时直接输出3列格式
无需额外处理后续转置,在提取属性的同时直接拼接为单行写入文件,代码如下:
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION :: 先写入表头(不需要可以删掉下面这行) ECHO Name,Size,Bitrate > Details.csv FOR /F "tokens=*" %%A in (Files.txt) do ( :: 把当前文件的3个属性输出到临时文件 getprops "%%A" 0,1,320 /noheaders > tmp_prop.txt :: 读取临时文件的3行属性拼接 set /p prop1=<tmp_prop.txt set /p prop2=<tmp_prop.txt set /p prop3=<tmp_prop.txt :: 拼接后写入最终csv ECHO !prop1!,!prop2!,!prop3! >> Details.csv del tmp_prop.txt ) ENDLOCAL
说明:
- 开启延迟变量扩展是为了在循环内部正确读取变量值
- 如果不需要csv表头,直接删除写表头的那行即可
- 给%%A加引号是为了兼容带空格的文件路径
方案2:单独处理已生成的单列Details.csv,转置为3列格式
如果你已经生成了1500行的单列文件,可直接运行下面的批处理完成转置:
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION :: 输出表头(不需要可删除) ECHO Name,Size,Bitrate > Details_Structured.csv set count=0 set line1= set line2= for /f "tokens=*" %%l in (Details.csv) do ( set /a count+=1 if !count!==1 set line1=%%l if !count!==2 set line2=%%l if !count!==3 ( ECHO !line1!,!line2!,%%l >> Details_Structured.csv set count=0 ) ) ENDLOCAL
运行后会生成新的Details_Structured.csv文件,就是你需要的500行3列结构化格式,可直接用Excel/WPS打开识别为表格。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

