批处理文件,用于为文本文件中的特定位置添加编号

时间:2018-03-10 04:21:50

标签: windows batch-file command

我有一个批处理文件,用于在文本文件中的特定位置添加数字。

例如:

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

1 个答案:

答案 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%"

根据需要,分别更改行23上的源文件名和输出文件名。

一个非常快速的解释:

第一个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

我们希望将循环的输出写入输出文件,因此我们将循环括在括号中并使用标准重定向运算符>重定向到新文件

<强>截图 screenshot