标题: [文本处理] 【已解决】批处理怎样提取文本中指定值? [打印本页]
作者: smss 时间: 2019-7-25 20:39 标题: 【已解决】批处理怎样提取文本中指定值?
本帖最后由 smss 于 2019-7-26 18:20 编辑
例句如下- <Circle x="432.5" y="144" fillColor="@Color" r="2"/>
- <Circle x="446.5" y="146.5" fillColor="@Color" r="2"/>
- <Circle x="460" y="150" fillColor="@Color" r="2"/>
- <Circle x="473" y="155" fillColor="@Color" r="2"/>
复制代码
提取文本1中x y的值以","号间隔 保存文本为2
生成文本样式如下
x="432.5,446.5,460,473"
y="144,146.5,150,155"
作者: 523066680 时间: 2019-7-25 21:29
完全没有自学能力的吗?
作者: Batcher 时间: 2019-7-26 10:55
- @echo off
- setlocal enabledelayedexpansion
- for /f tokens^=1-4^ delims^=^" %%a in ('type "1.txt"') do (
- set m=!m!,%%b
- set n=!n!,%%d
- )
- >"2.txt" echo x="!m:~1!"
- >>"2.txt" echo y="!n:~1!"
复制代码
作者: smss 时间: 2019-7-26 13:30
本帖最后由 smss 于 2019-7-26 14:29 编辑
回复 3# Batcher
能不能改改这兼容性不够
<Circle y="144" x="432.5" fillColor="@Color" r="2"/>
会截取成
x="144"
y="432.5"
能不能定义x="为分隔符将文本分为2部分
作者: xczxczxcz 时间: 2019-7-26 15:25
本帖最后由 xczxczxcz 于 2019-7-26 15:27 编辑
- $f =gc 1.txt -readcount 0;
- $x =[regex]::matches($f,'(?is)(?<=\bx=")[\d.]+').value;
- $y =[regex]::matches($f,'(?!s)(?<=\by=")[\d.]+').value;
- $out ='x="'+($x -join ',')+'"'+"`n"+'y="'+($y -join ',')+'"'
- sc '.\2.txt' -value $out -force;
复制代码
作者: smss 时间: 2019-7-26 18:17
本帖最后由 smss 于 2019-7-26 19:30 编辑
回复 5# xczxczxcz
$out ='x="'+($x -join ',')+'"'+"`n"+'y="'+($y -join ',')+'"'
第4句这样才能换行"`n"——"`r`n"
作者: smss 时间: 2019-7-26 19:49
本帖最后由 smss 于 2019-7-26 20:03 编辑
回复 5# xczxczxcz
<Button name="del" x="180" y="#sh -626.67" w="180" h="156.67" alignV="bottom" alignChildren="true">- $y =[regex]::matches($f,'(?!s)(?<=\by=")[\S.]["/]+').value;
复制代码
提取y=" "之间所有字符可以吗
作者: xczxczxcz 时间: 2019-7-26 20:12
回复 7# smss
俺已下线了。- $y =[regex]::Matches($f,'(?is)(?<=\by=")[^"]+\b').value;
复制代码
脚本有针对性,不是所有地方都可用。
作者: smss 时间: 2019-7-27 00:45
本帖最后由 smss 于 2019-7-27 09:49 编辑
回复 8# xczxczxcz - $f =gc manifest.xml -readcount 0 -enc utf8;
- $x =[regex]::matches($f,'(?is)(?<=\bx=")[^"]+\b').value;
- $y =[regex]::Matches($f,'(?is)(?<=\by=")[^"]+\b').value;
- $w =[regex]::matches($f,'(?is)(?<=\bw=")[^"]+\b').value;
- $h =[regex]::matches($f,'(?!s)(?<=\bh=")[^"]+\b').value;
- $r =[regex]::matches($f,'(?!s)(?<=\br=")[^"]+\b').value;
- $alpha =[regex]::matches($f,'(?is)(?<=\balpha=")[^"]+\b').value;
- $pivotX =[regex]::matches($f,'(?is)(?<=\bpivotX=")[^"]+\b').value;
- $pivotY =[regex]::matches($f,'(?is)(?<=\bpivotY=")[^"]+\b').value;
- $angle =[regex]::matches($f,'(?is)(?<=\bangle=")[^"]+\b').value;
- $scale =[regex]::matches($f,'(?is)(?<=\bscale=")[^"]+\b').value;
- $src =[regex]::matches($f,'(?is)(?<=\bsrc=")[^"]+\b').value;
- $srcExp =[regex]::matches($f,'(?is)(?<=\bsrcExp=")[^"]+\b').value;
- $align =[regex]::matches($f,'(?is)(?<=\balign=")[^"]+\b').value;
- $alignV =[regex]::matches($f,'(?is)(?<=\balignV=")[^"]+\b').value;
- $package =[regex]::matches($f,'(?is)(?<=\bpackage=")[^"]+\b').value;
- $class =[regex]::matches($f,'(?is)(?<=\bclass=")[^"]+\b').value;
- $out ='<Var name="信息_x" type="number[] const="false" values="'+($x -join ',')+'"/>'+"`r`n"+'<Var name="信息_y" type="number[] const="false" values="'+($y -join ',')+'"/>'+"`r`n"+'<Var name="信息_w" type="number[] const="true" values="'+($w -join ',')+'"/>'+"`r`n"+'<Var name="信息_h" type="number[] const="true" values="'+($h -join ',')+'"/>'+"`r`n"+'<Var name="信息_r" type="number[] const="true" values="'+($r -join ',')+'"/>'+"`r`n"+'<Var name="信息_alpha" type="number[] const="true" values="'+($alpha -join ',')+'"/>'+"`r`n"+'<Var name="信息_pivotX" type="number[] const="true" values="'+($pivotX -join ',')+'"/>'+"`r`n"+'<Var name="信息_pivotY" type="number[] const="true" values="'+($pivotY -join ',')+'"/>'+"`r`n"+'<Var name="信息_angle" type="number[] const="true" values="'+($angle -join ',')+'"/>'+"`r`n"+'<Var name="信息_scale" type="number[] const="true" values="'+($scale -join ',')+'"/>'+"`r`n"+'<Var name="信息_src" type="string[]" const="true" expression="''''" values="'''+($src -join ''',''')+'''"/>'+"`r`n"+'<Var name="信息_srcExp" type="string[]" const="true" expression="''''" values="'''+($srcExp -join ''',''')+'''"/>'+"`r`n"+'<Var name="信息_align" type="string[]" const="true" expression="''''" values="'''+($align -join ''',''')+'''"/>'+"`r`n"+'<Var name="信息_alignV" type="string[]" const="true" expression="''''" values="'''+($alignV -join ''',''')+'''"/>'+"`r`n"+'<Var name="信息_package" type="string[]" const="true" expression="''''" values="'''+($package -Join ''',''')+'''"/>'+"`r`n"+'<Var name="信息_class" type="string[]" const="true" expression="''''" values="'''+($class -join ''',''')+'''"/>'
- sc '.\数组信息.xml' -value $out -enc utf8 -force;
复制代码
感觉能精减 还有可以加统计数量吗 比如 X="11.5,555,888" x的值共3个这样 最好能区分节点名 比如 <Text name="sms" x="#info_x+#sms_x-58" y="375" color="@Color1" size="32"/> 那么生成所有名为Text_x 并把对应所有<Text节点 x的值归类
<Image name="icon_sms" x="#info_x+#icon_sms_x" y="340" w="88" h="88" pivotX="64.5" pivotY="64.5"/> 那么生成所有名为Image_x 并把对应所有<Image节点 x的值归类 以此类推
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |