替换整行cmd

时间:2016-04-07 08:46:58

标签: batch-file cmd

我有一个文件,我搜索特定的文本,并希望用另一个文本替换它。例如:

<role-name>test</role-name>

这就是我想要用以下内容替换它的内容:

<role-name>file</role-name>

这里的问题是<role-name>标签可能是其他文字,然后是“测试”。

如何找到整行并将其替换为我需要的文字?

或许我可以检索标签的行号并将其全部替换掉​​,但我又不知道该怎么做: - )

2 个答案:

答案 0 :(得分:0)

在没有外部代码的情况下执行此操作的关键是使用字符串替换表达式。我假设你想参数化标签和值字符串。这也取决于没有任何换行符的序列。

C:>type seb.bat
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET EXITCODE=0

SET "TAG=%~1"
SET "FROMVAL=%~2"
SET "TOVAL=%~3"

FOR /F "usebackq tokens=*" %%a IN (`TYPE "seb.html"`) DO (

    echo %%a

    SET S1=%%a
    SET S2=!S1:^<%TAG%^>%FROMVAL%^</%TAG%^>=^<%TAG%^>%TOVAL%^</%TAG%^>!
    ECHO !S2!
)

EXIT /B %EXITCODE%

C:>type seb.html
<role-name>test</role-name>

C:>seb role-name test file
<role-name>test</role-name>
<role-name>file</role-name>
<role-name></role-name>
<role-name></role-name>

C:>seb role-name test ""
<role-name>test</role-name>
<role-name></role-name>
<role-name></role-name>
<role-name></role-name>

C:>seb role-name "" "file"
<role-name>test</role-name>
<role-name>test</role-name>
<role-name></role-name>
<role-name>file</role-name>

答案 1 :(得分:0)

问题是我正在从一个文件中读取并且我想要比较的字符串来自for循环。这是我的代码,它从文件读取并写入我需要的代码,如果有人需要它:

set "nameofapp=%<display-name>"
set "nameofapp_country=%    <display-name>ASD</display-name>"
set "rolename=%<role-name>"
set "rolename_country=%                <role-name>ASD-role</role-name>"
set "propertiesfile=%<env-entry-value>"
set "properties_file=%        <env-entry-value>java-asd.properties</env-entry-value>"
set "web=src\main\webapp\WEB-INF\web.xml"
set "web_1=web.xml"

(for /f "delims=" %%i in (%web%) do (
    set "line=%%i"
    setlocal enabledelayedexpansion

    set "name=!line:%nameofapp%=%!"
    if not !name! == !line! (
        set "line=%nameofapp_country%"
    )

    set "role=!line:%rolename%=%!"
    if not !role! == !line! (
        set "line=%rolename_country%"
    )

    set "property=!line:%propertiesfile%=%!"
    if not !property! == !line! (
        set "line=%properties_file%"
    )
    echo(!line!
    endlocal
))>"%web_1%"
del %web%
Move %web_1%  "src\main\webapp\WEB-INF\"