Board logo

标题: [文本处理] [已解决]批处理按格式要求输出文本内容到各个TXT [打印本页]

作者: blueskyczg    时间: 2014-5-8 09:13     标题: [已解决]批处理按格式要求输出文本内容到各个TXT

一个目录下有多个相似文本a.txt,b.txt,c.txt...,文本内容如下

坐标系=西安坐标系
几度分带=
投影类型=高斯克吕格
计量单位=米
带号=
精度=
转换参数=X平移,Y平移,
[地块坐标]
4,1.4653,2009-43,地块1,面,57,未利用地,,@
J01,1,X,Y
J02,1,X,Y
J03,1,X,Y
J01,1,X,Y
4,1.3925,2009-43,地块2,面,57,未利用地,,@
J01,1,X,Y
J02,1,X,Y
J03,1,X,Y
J01,1,X,Y
4,1.3925,2009-43,地块3,面,57,未利用地,,@
J01,1,X,Y
J02,1,X,Y
J03,1,X,Y
J01,1,X,Y

请教大神把文本的内容按照
J01,Y,X
J02,Y,X
J03,Y,X
J01,Y,X
注意位置
为一个文本输出,文本名称是J01上一行的"地块1"。同样地块2、地块3也是这样格式输出!
但是因为b.txt,c.txt...中同样有很多地块,所以要把每个txt输出的文本放在以文本名称命名
的文件夹内。
作者: apang    时间: 2014-5-8 10:14

本帖最后由 apang 于 2014-5-8 10:47 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for %%i in (*.txt) do (
  3.     md "%%~ni" 2>nul
  4.     for /f "usebackq delims=" %%a in ("%%i") do (
  5.         set "str=%%a"
  6.         if "!str:,地块=!" neq "!str!" (
  7.             for /f "delims=," %%b in ("!str:*,地块=!") do (
  8.                 set "Name=地块%%b"
  9.             )
  10.         ) else if defined Name (
  11.             for /f "tokens=1,3,4delims=, " %%b in ("!str!") do (
  12.                 echo,%%b,%%d,%%c>>"%%~ni\!Name!.txt"
  13.             )
  14.         )
  15.     )
  16.     set "Name="
  17. )
  18. pause
复制代码

作者: blueskyczg    时间: 2014-5-8 10:28

回复 2# apang
文本内容不是按照给出的格式,原始的是
J01,1,X,Y
J02,1,X,Y
J03,1,X,Y
J01,1,X,Y   
现在的是
J01,Y,X
J02,Y,X
J03,Y,X
J01,Y,X
麻烦再帮忙看看,谢谢!
作者: apang    时间: 2014-5-8 10:48

回复 3# blueskyczg


    已修改
作者: blueskyczg    时间: 2014-5-8 11:05

回复 4# apang
已解决,非常感谢!
顺便问下,Excel的相似的文本内容可以批处理么?




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