【问题标题】:Batch file to add number a number for specific location in a text file [closed]批处理文件为文本文件中的特定位置添加数字[关闭]
【发布时间】:2018-03-10 04:21:50
【问题描述】:

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

例如:

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

【问题讨论】:

  • 欢迎来到 Stack Overflow。这不是一个代码/SQL/正则表达式编写服务,您可以在其中发布您的要求和选择的语言列表,并且代码猴子会为您生成代码。我们非常乐意提供帮助,但我们希望您首先努力自己解决问题。完成后,您可以解释您遇到的问题,包括您工作的相关部分,并提出具体问题,我们会尽力提供帮助。祝你好运。
  • 您可以使用 FOR /F 命令来读取文件。然后,您可以使用 TOKENS 和 DELIMS 选项使用斜杠作为分隔符来分割行。
  • (for /f "tokens=1* delims=/" %%a in (oldfile.text) do echo %%a/30/%%b) >newfile.text

标签: windows batch-file command


【解决方案1】:

从与示例源文件相同的目录运行的以下示例脚本应该可以工作:

@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 行上的源文件名和输出文件名。

一个非常快速的解释:

第一个Forloop 读取每个源文件行,使用逗号作为分隔符将其分成七个标记。 (第一个令牌被分配为%%A,第二个为%%B,第三个为%%C,第四个为%%D,第五个为%%E,第六个为%%F,以及第六个之后的所有内容, *, to%%G.)

我们要处理第六个令牌的内容,即%%F

第二个Forloop 读取分配为%%F 的每个字符串,使用正斜杠作为分隔符将其分成两个标记。 (第一个令牌被分配为%%H,以及第一个之后的所有内容,*,to%%I

我们希望将新字符串30/in 放在标记%%H%%I之间,重新添加到已删除的分隔符中。 (%%H/30/%%I)

我们现在要将修改后的第六个标记%%F(%%H/30/%%I),放回添加已删除分隔符的行中。 (%%A,%%B,%%C,%%D,%%E,%%H/30/%%I,%%G)

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

截图

【讨论】:

  • 你好,我试过你的代码,但它有输出 newfile.txt 但里面没有数据。
  • 代码运行良好,并且已经在至少两个不同的 Windows 操作系统版本上进行了测试。您要么错误地复制了它,要么没有针对您在问题中使用的文件运行它。请提供更多信息,您在我发布的脚本中的确切修改内容以及您运行它时所针对的文件内容。
  • 抱歉,现在可以使用了。我会将您的答案标记为答案。谢谢你uuuuuu!
  • 嗨,伙计。我只是想问我是否要添加 if else 语句我将放在哪里
  • 我不关注你。 Else 语句在If 语句之后是有条件的;你必须更具体地说明你想要做什么。
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多