Заменить первое вхождение текста в сценарии .bat - PullRequest
0 голосов
/ 11 июня 2011

Мне нужно заменить первое вхождение <?php в файле .txt на <?php this is a test из файла .bat.

Если есть и другие случаи <?php, их не следует заменять

Как я могу это сделать.

В качестве альтернативы (хотя и более опасно) ... Я мог бы просто удалить первую строку файла (при условии, что это будет <?php) и заменить ее на вышеприведенное, но я не знаю, как это сделать в партия.

Ответы [ 2 ]

0 голосов
/ 13 июня 2011

Да, вы можете выполнять эту (расширенную) манипуляцию строк чем-то вроде

@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%
0 голосов
/ 11 июня 2011

Вы не можете выполнять эти типы (расширенных) операций со строками в пакетном режиме, для этого вам нужен более сильный язык, например, для написания консольного приложения .NET или с использованием языка сценариев, такого как vbscript или powershell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...