Windows 使用DOS替换文件的特定行

Windows 使用DOS替换文件的特定行,windows,batch-file,cmd,dos,Windows,Batch File,Cmd,Dos,我有一个XML文件,我需要使用DOS命令用我自己的行替换一行,比如第7行。如何做到这一点?我的建议是基于这样一个事实,即您通过编号而不是内容来识别行 @echo OFF REM Say LINE 7 to be removed SETLOCAL ENABLEDELAYEDEXPANSION SET LOWER=6 SET UPPER=8 SET INDEX=0 SET MYLINE="this is my new line" SET OUTFILE=%~n1.new%~x1 >%OUTFI

我有一个XML文件,我需要使用DOS命令用我自己的行替换一行,比如第7行。如何做到这一点?

我的建议是基于这样一个事实,即您通过编号而不是内容来识别行

@echo OFF
REM Say LINE 7 to be removed
SETLOCAL ENABLEDELAYEDEXPANSION
SET LOWER=6
SET UPPER=8
SET INDEX=0
SET MYLINE="this is my new line"
SET OUTFILE=%~n1.new%~x1
>%OUTFILE% (
    for /F "tokens=*" %%L in (%1) do (SET /A INDEX += 1
        IF !INDEX! LEQ %LOWER% (echo %%L) ELSE break
    )
    echo %MYLINE%
    more +%UPPER% %1
)
  • 因为我们做了大量的重定向,所以需要回显
  • 使能延迟扩展 循环中的计数器需要
  • 您只需将xml文件作为参数传递给脚本

HTH

XML文件没有“行”,也没有用于处理XML的“DOS命令”。此外,这不是一个“给我写一些代码”的网站。我们确实希望在postingI选择另一种脚本语言之前,您先自己做一些工作,您可以使用批处理文件来做,但这将是一个相当痛苦的过程。类似vbs的东西,甚至是一个非常简单的c#console应用程序,都会让这变得非常简单。检查一下——如果你对这个工具有什么问题,尽管问。或者最好尝试使用powershell。使用vbscript可能会有一些运气。见这个问题: