Board logo

标题: [文本处理] [已解决]批处理怎样实现每5行变一行? [打印本页]

作者: wangdao6699    时间: 2015-4-25 09:35     标题: [已解决]批处理怎样实现每5行变一行?

多记事本
A记事本名字为:木材.txt 其多行内容:
名称,柳木
产地,西南123
性质,轻cc36
特征,红色
价格类,低廉

名称,马尾松
产地,华南东
性质,纹理直36
特征,褐色色
价格属于,低廉
。。。。。。
B记事本名字为:塑料.txt 其内容
名称,强化玻璃
产地,西板3
性质,轻cc36
特征,透光
价格类,低廉

名称,树脂并369
产地,华南
性质,弹性兼顾
特征,泡棉
价格属于,便宜
。。。。。。。。
以,分隔符,将第一列变位替换成相应的记事本名字
木材.txt内容变为:
木材,柳木,西南123,轻cc36,红色,低廉
木材,马尾松,华南东,纹理直36,褐色色,低廉
.......
塑料.txt内容 变为
塑料,强化玻璃,西板3,轻cc36,透光,低廉
塑料,树脂并369,华南,弹性兼顾,泡棉,便宜
作者: bailong360    时间: 2015-4-25 10:08

本帖最后由 bailong360 于 2015-4-25 10:37 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*.txt) do (
  4.     set n=0
  5.     (for /f "delims=" %%j in (%%~si) do  (
  6.         set /a n+=1
  7.         if !n!==1 (
  8.             <nul set /p=%%~ni,%%j,
  9.         ) else if !n!==5 (
  10.             echo %%j
  11.         ) else if !n!==6 (
  12.             set n=0
  13.         ) else <nul set /p=%%j,
  14.     ))>tmp
  15.     move /y tmp "%%~fi"
  16. )
复制代码

作者: wangdao6699    时间: 2015-4-25 10:20

回复 2# bailong360


    感谢您回复,运行结果是多了第一列内容
作者: bailong360    时间: 2015-4-25 10:37

本帖最后由 bailong360 于 2015-4-25 11:07 编辑

回复 3# wangdao6699

貌似是编码格式的问题,在电脑上折腾的快晕了

修改后的代码看能不能成功

不能成功传个样本到百度云吧
作者: pcl_test    时间: 2015-4-25 11:11

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md "处理结果\" 2>nul
  4. for /f "delims=" %%a in ('dir /b *.txt')do (
  5. set n=0
  6. (for /f "tokens=1* delims=," %%b in ('type "%%a"')do (
  7. set "s=!s!%%c,"
  8. set /a n+=1
  9. if "!n!" equ "5" (echo,%%~na,!s:~,-1! & set n=0 & set s=)
  10. ))>"处理结果\%%a"
  11. )
  12. pause
复制代码

作者: wangdao6699    时间: 2015-4-25 11:37

回复 5# pcl_test


    运行有效,非常感谢您,评不了分了。。。
作者: aipo    时间: 2015-4-26 21:04

对我也有用 感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2