在Windows shell脚本中插入多个文件

时间:2013-07-05 17:47:17

标签: windows for-loop batch-file cmd

基本上我正在尝试编写批处理文件以将一些代码插入到多个文件中。以下是我要完成的细节:
1.输入字符串来自文件test.txt 2.需要插入字符串作为第二行目标文件 3.目标文件是与批处理文件方向相同的所有.xml文件。

我想我应该使用FOR循环遍历所有.xml文件。像

这样的东西
for /f %%i in ('dir /b *.xml') do ()

我已阅读了一些教程和帖子,但无法找到在循环中向文件添加任何内容的方法。使用Echo或TYPE似乎不适用于循环中的每个文件。如何在循环中修改文件?
另外要插入一定数量的行,有些帖子说文件需要放入变量中。但我的文件非常大,我不想把它放到变量中。是否有另一种方法可以插入文件中的某一行?

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN ('dir /b *.xml') DO (
 SET line2=Y
 (
  FOR /f "usebackqdelims=" %%x IN ("%%i") DO (
  ECHO(%%x
  IF DEFINED line2 TYPE Line2.txt
  SET "line2="
 )
 )>"%%~ni.lmx"
)
GOTO :EOF

这应该适合你 - 但它会删除空行。

答案 1 :(得分:0)

@echo off
set /P string=< test.txt
for %%a in (*.xml) do (
   (for /F "usebackq tokens=1* delims=:" %%b in ('findstr /N "^" "%%a"') do (
      if %%b equ 2 echo %string%
      set "line=%%c"
      setlocal EnableDelayedExpansion
      echo(!line!
      endlocal
   )) > "%%a.new"
)

新文件的扩展名为.xml.new;您可以添加几行来删除原始.xml文件,并将.xml.new个文件重命名为.xml