替换.bat脚本中第一次出现的文本

时间:2011-06-11 05:41:43

标签: batch-file

我需要在.bat文件中用<?php替换.txt文件中第一次出现的<?php this is a test

如果再次出现<?php,则不应替换它们

我该怎么办呢。

或者(虽然更危险)...我可以删除文件的第一行(假设它将是<?php)并用上面的代替它,但我不知道该怎么做或者批量生产。

2 个答案:

答案 0 :(得分:0)

您无法批量执行这些类型的(高级)字符串操作,您需要更强大的语言,例如编写.NET控制台应用程序,或使用vbscript或powershell等脚本语言。

答案 1 :(得分:0)

是的,您可以使用类似

之类的(高级)字符串操作
@echo off
set "infile=C:\temp\myFile.php"
set "outfile=C:\temp\myOut.php"
setlocal DisableDelayedExpansion
set "first=1"
(
    for /f "delims=" %%A in ('"findstr /n ^^ %infile%"') do (
        set "line=%%A"
        setlocal EnableDelayedExpansion

        set "line=!line:*:=!"
        if defined first (
            if defined line (
                set "replace=!line:<?php=<?php this is a test!"
                if !line! NEQ !replace! (
                  set "first="
                  set "line=!replace!"
                )
            )
        )
        (echo(!line!)
        if not defined first (
            endlocal
            set "first="
        ) ELSE (
            endlocal
        )
    ) 
) > %outfile%