是否可以使用正则表达式搜索和替换特定的文本文件?我有一个位于 C:\content 的文本文件.txt
里面的文字有谷歌链接
https://www.google.com/
我需要一个批处理 (.bat( 脚本,可以将<https://www.google.com/>
替换为[abc]https://www.google.com/[/abc]
这是记事本++正则表达式替换
Find What: .+(.google.com).+
Replace with: [abc]$0[/abc]
你应该在 vbscript 中使用正则表达式和一个批处理文件,如下所示的代码: 您可以在此处查看正则表达式演示
@echo off
Mode 85,20 & color 0A
Title Replace String using Regex with vbscript
Set "InputFile=C:Testcontent.txt"
Set "OutPutFile=%~dp0NewContent.txt"
echo(
:: To show Results on screen of console
Call :Search_Replace "%InputFile%" CON
:: To write Result in new file
Call :Search_Replace "%InputFile%" "%OutPutFile%"
echo(
echo Press any key to show the results in a new file :
echo "%OutPutFile%"
pause>nul
Start "" "%OutPutFile%"
echo(
echo Did you want to update and replace all in your original file "%InputFile%" ?
Pause>nul
Move /Y "%OutPutFile%" "%InputFile%">nul
Start "" "%InputFile%" & Exit
::-----------------------------------------------------------------------------------
:Search_Replace <InputFile> <OutPutFile>
(
echo WScript.StdOut.WriteLine Search_Replace(Data^)
echo Function Search_Replace(Data^)
echo Dim strPattern, strReplace, strResult,oRegExp
echo Data = "%~1"
echo Data = WScript.StdIn.ReadAll
echo strPattern = "(x22<|<)([sS]*?)(/>x22|>| />x22| />| x22>)"
echo strReplace = "[abc]$2[/abc]"
echo Set oRegExp = New RegExp
echo oRegExp.Global = True
echo oRegExp.IgnoreCase = True
echo oRegExp.Pattern = strPattern
echo strResult = oRegExp.Replace(Data,strReplace^)
echo Search_Replace = strResult
echo End Function
)>"%tmp%%~n0.vbs"
cscript //nologo "%tmp%%~n0.vbs" < "%~1" > "%~2"
If Exist "%tmp%%~n0.vbs" Del "%tmp%%~n0.vbs"
Exit /B
::----------------------------------------------------------------------------------
例如,如果文件的内容C:Content.txt
如下所示:
"<https://www.google.com />" <https://www.google.com> "<https://www.developpez.net/>" <https://www.developpez.net /> "<https://www.bing.com/>" "<https://www.bing.com />" "<https://stackoverflow.com/> <https://stackoverflow.com/>" <https://stackoverflow.com /> "<https://stackoverflow.com />"
替换为正则表达式后应该是这样的:
[abc]https://www.google.com[/abc] [abc]https://www.google.com[/abc] [abc]https://www.developpez.net[/abc] [abc]https://www.developpez.net[/abc] [abc]https://www.bing.com[/abc] [abc]https://www.bing.com[/abc] [abc]https://stackoverflow.com/[/abc] [abc]https://stackoverflow.com[/abc] [abc]https://stackoverflow.com[/abc] [abc]https://stackoverflow.com[/abc]
您可以将伪正则表达式与命令 FINDSTR 一起使用。
在下面的示例中,对于文件"content.txt"中的每一行,我们检查它是否包含正则表达式并替换链接。然后,您可以将输出重定向到新文件。
@ECHO OFF
SET "REGEX=.*.google.com..*"
FOR /F %%I IN (content.txt) DO CALL :REPLACE "%%I"
EXIT /B 0
:REPLACE
SET "LINK=%~1"
ECHO "%LINK%" | FINDSTR /R "%REGEX%" > nul && SET "LINK=[abc]%LINK%[/abc]"
ECHO "%LINK%"
GOTO :EOF
输出:
"[abc]<https://www.google.com/>[/abc]"
"<https://www.bing.com/>"
重定向输出和替换文件:
test.bat > output.txt
move output.txt content.txt