批处理:将.txt文件中的行插入.txt文件

Sto*_*ing 3 batch-file

我是批处理文件的新手,并且一直在修改简单的命令.我已经想出如何将文本移动到另一个文件,找到一行等,但我希望能够在已有的文本文件中添加几行文本.这是我到目前为止:

@ECHO OFF
CD C:\Documents and Settings\SLZ1FH\Desktop\New Folder
FOR /F "tokens=*" %%A IN (Examples.txt) DO (
  ECHO %%A
  IF %%A=="Ex3 3"(
    TYPE Line_to_add.txt >> Examples.txt
  )
)
Run Code Online (Sandbox Code Playgroud)

如果Examples.txt包含:

  • Ex1 1
  • Ex2 2
  • Ex3 3
  • Ex4 4
  • Ex5 5

和Line_to_add.txt包含:

  • 这是一条线
  • 这是踢球的另一条线!

我希望输出为:

  • Ex1 1
  • Ex2 2
  • Ex3 3
  • 这是一条线
  • 这是踢球的另一条线!
  • Ex4 4
  • Ex5 5

tia :)

@ECHO OFF
FOR /F "tokens=*" %%A IN (Examples.txt) DO (
  ECHO %%A
  IF "%%A" EQU "Ex3" (
    TYPE Line_to_add.txt
  )
) >> temp.txt
move /y temp.txt Examples.txt
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 6

你从不打扰提问,但我可以看到你的代码有一些问题.

1)您的IF语句被破坏,因为左侧的paren被视为要比较的字符串的一部分.你必须至少有一个空间.

2)您的比较永远不会找到匹配,因为引号包含在比较中.您的值有空格,因此比较的两边应该用引号括起来.

3)您正在尝试插入现有文件,但无法正常工作.您的代码只会将文本附加到文件的末尾.您必须将整个所需结果写入新的临时文件,然后将临时文件移动到原始名称.

首先,我将忽略文件的更新,并显示如何获得正确的输出到屏幕.

@ECHO OFF
FOR /F "tokens=*" %%A IN (Examples.txt) DO (
  ECHO %%A
  IF "%%A" EQU "Ex3 3" (
    TYPE Line_to_add.txt
  )
)
Run Code Online (Sandbox Code Playgroud)

然后,将输出定向到文件并将文件移动到所需名称很简单.

@ECHO OFF
(
  FOR /F "tokens=*" %%A IN (Examples.txt) DO (
    ECHO %%A
    IF "%%A" EQU "Ex3 3" (
      TYPE Line_to_add.txt
    )
  )
) >temp.txt
move /y temp.txt Examples.txt
Run Code Online (Sandbox Code Playgroud)

学习批处理语法和技术的良好资源:

1)每个命令都有在线帮助.只需/?在命令名后添加选项即可.例如,DIR /?

2)以下是一些信息良好的网站

http://www.dostips.com/
http://judago.webs.com/
http://www.robvanderwoude.com/batchfiles.php