Replace entire line cmd
我有一个文件,我在其中搜索特定的文本,并希望将其替换为另一个。例如:
1 | <role-name>test</role-name> |
例如,这是我要替换为的内容:
1 | <role-name>file</role-name> |
这里的问题是
如何找到整行并将其替换为所需的文本?
或者也许我可以检索标签的行号并将其整体替换,但是同样我也不知道该怎么做:-)
问题是我正在从文件中读取内容,而我想比较的字符串出现在for循环中。这是我的代码,可以从文件中读取并编写所需的代码(如果有人需要的话):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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" |
无需外部代码即可执行此操作的关键是使用字符串替换表达式。我假设您想参数化标签和值字符串。这也取决于没有任何换行符的序列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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> |