标题: [文本处理] 批处理如何在指定字符后面插入/添加递增的数字序号 [打印本页]
作者: danxiong 时间: 2017-6-4 22:45 标题: 批处理如何在指定字符后面插入/添加递增的数字序号
本帖最后由 pcl_test 于 2017-6-5 09:34 编辑
寻找批处理代码或者可以实现此功能的软件
文本内容:
[]
dr=.vd
ort=50
nt=
[]
dr=.vd
ort=50
nt=
[]
dr=.vd
ort=50
nt=
将所有[替换为[123,或者说是从[这个字符后面添加123,
123为递增的数字,数字从123开始。
想要的结果:
[123]
dr=.vd
ort=50
nt=
[124]
dr=.vd
ort=50
nt=
[125]
dr=.vd
ort=50
nt=
作者: taofan712 时间: 2017-6-5 08:42
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,* delims=:" %%x in ('findstr /n .* a.txt') do (
- set "line=%%y"
- if defined line (
- if "!line!"=="[]" (
- set /a n+=1
- echo;[12!n!]
- ) else (
- echo;%%y
- )
- ) else echo;
- )
- pause
复制代码
作者: 老刘1号 时间: 2017-6-5 12:14
本帖最后由 老刘1号 于 2017-6-5 12:19 编辑
回复 2# taofan712
你大前天说的话这么快就忘了?
作者: danxiong 时间: 2017-6-5 14:43
本帖最后由 danxiong 于 2017-6-5 16:34 编辑
回复 2# taofan712
非常感谢,问题不完美解决,发现数字数到129之后不是130而是1210,这就不对了。
再补充个问题,我在代码倒数第二行加了>>=b.txt 发现结果是重复运行后将结果添加到原先的文件,怎样让再次运行bat后生成的b.txt是覆盖而不是添加?
作者: ShowCode 时间: 2017-6-5 19:37
回复 4# danxiong - @echo off
- setlocal enabledelayedexpansion
- set n=123
- (for /f "tokens=1,* delims=:" %%x in ('findstr /n .* a.txt') do (
- set "line=%%y"
- if defined line (
- if "!line!"=="[]" (
- echo;[!n!]
- set /a n+=1
- ) else (
- echo;%%y
- )
- ) else echo;
- ))>b.txt
复制代码
作者: danxiong 时间: 2017-6-6 05:54
回复 5# ShowCode
非常感谢,已经完全解决了,效果很好。
作者: danxiong 时间: 2017-6-6 14:36
回复 5# ShowCode
再请教高手,我又试着用这代码处理其它文件,发现无法处理,像这个
<Reg name="aaaaa" id="1">
<e name="1000">
<ID />
<Port>3550</Port>
<eName>1000</eName>
<Reg name="aaaaa" id="1">
<e name="1000">
<ID />
<Port>3550</Port>
<eName>1000</eName>
<Reg name="aaaaa" id="1">
<e name="1000">
<ID />
<Port>3550</Port>
<eName>1000</eName>
将1000递增数字,是不是因为特殊字符的原因无法处理呢?
作者: ShowCode 时间: 2017-6-6 15:10
回复 7# danxiong
<e name="1000">
<eName>1000</eName>
两个地方都需要改吗?
作者: ShowCode 时间: 2017-6-6 15:14
- @echo off
- setlocal enabledelayedexpansion
- set n=1000
- (for /f "tokens=1,* delims=:" %%x in ('findstr /n .* a.txt') do (
- set "line=%%y"
- if defined line (
- if "!line:e name=!" equ "!line!" (
- if "!line:eName=!" equ "!line!" (
- echo,%%y
- ) else (
- echo ^<eName^>!n!^</eName^>
- set /a n+=1
- )
- ) else (
- echo ^<e name="!n!"^>
- REM set /a n+=1
- )
- ) else (
- echo,
- )
- ))>b.txt
复制代码
作者: danxiong 时间: 2017-6-7 14:30
回复 9# ShowCode
再次感谢,经过多次测试,已经知道如何用这个代码处理其它文件了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |