我有一个批处理文件,用于在文本文件中的特定位置添加数字。
例如:
A,B,C,D,1,07/2018,3,4
E,F,G,H,5,06/2019,7,8
I,J,K,L,9,10/2020,11,12
输出将是:
A,B,C,D,1,07/30/2018,3,4
E,F,G,H,5,06/30/2019,7,8
I,J,K,L,9,10/30/2020,11,12
修改
这是我的代码,但它仅适用于每行的末尾。但我需要在delims的特定位置添加一些文本或数字
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims=/" %%a in (oldfile.text) do echo ^%%a^/ >>newfile.text
答案 0 :(得分:0)
以下示例脚本从与示例源文件相同的目录运行:
@Echo Off
Set "SrcFile=oldfile.text"
Set "OutFile=newfile.text"
If Not Exist "%SrcFile%" Exit /B
( For /F "UseBackQ EOL=, Tokens=1-6* Delims=," %%A In ("%SrcFile%"
) Do For /F "Tokens=1* Delims=/" %%H In ("%%F"
) Do Echo=%%A,%%B,%%C,%%D,%%E,%%H/30/%%I,%%G)>"%OutFile%"
根据需要,分别更改行2
和3
上的源文件名和输出文件名。
一个非常快速的解释:
第一个For
循环读取每个源文件行,使用逗号作为分隔符将其拆分为七个标记。 (第一个标记分配为%%A
,第二个标记为%%B
,第三个标记为%%C
,第四个标记为%%D
,第五个标记为%%E
,第六个标记为%%F
,以及第六个之后的所有内容,*
,%%G
。)
我们希望使用第六个令牌的内容,即%%F
第二个For
循环读取分配为%%F
的每个字符串,使用正斜杠作为分隔符将其拆分为两个标记。 (第一个标记被指定为%%H
,第一个标记被指定为*
到%%I
)
我们希望将新字符串30/
放在令牌%%H
和%%I
之间,并在删除的分隔符中添加回来。 (%%H/30/%%I
)
我们现在希望将修改后的第六个令牌%%F
,(%%H/30/%%I
)放回添加到已删除分隔符的行中。 (%%A,%%B,%%C,%%D,%%E,%%H/30/%%I,%%G
)
我们希望将循环的输出写入输出文件,因此我们将循环括在括号中并使用标准重定向运算符>
重定向到新文件