bat脚本 使用^(\d+)\.(\d+)\.(\d+)$"表达式
时间: 2023-07-25 12:11:45 浏览: 90
BAT批处理脚本-字符串.zip
可以使用VBScript引擎或PowerShell引擎来在Bat脚本中使用正则表达式。以下是一个使用VBScript引擎的示例,正则表达式为^(\d+)\.(\d+)\.(\d+)$:
```bat
@echo off
setlocal EnableDelayedExpansion
set string=version 1.0.988 is the latest release
set regex=^(\d+)\.(\d+)\.(\d+)$
rem 定义VBScript脚本
set vbs="
Set objRegExp = New RegExp
objRegExp.Pattern = ""%regex%""
objRegExp.Global = False
Set objMatch = objRegExp.Execute(""%string%"")
If objMatch.Count > 0 Then
Set objMatches = objMatch(0).SubMatches
WScript.Echo objMatches(0) & ""."" & objMatches(1) & ""."" & objMatches(2)
End If
"
rem 使用VBScript引擎执行脚本
for /f "delims=" %%i in ('cscript //nologo //e:vbscript "%vbs%"') do set "new_string=%%i"
echo %new_string%
endlocal
```
在这个示例中,我们使用VBScript引擎定义了一个正则表达式,并使用Execute()函数匹配字符串,并使用SubMatches属性获取匹配到的子字符串。最后,使用Bat脚本的for /f命令将VBScript脚本的输出赋值给变量new_string,从而实现了在Bat脚本中使用正则表达式的功能。
如果你使用Windows 10及以上版本,也可以使用PowerShell引擎实现正则表达式的功能。以下是一个使用PowerShell引擎的示例,正则表达式为^(\d+)\.(\d+)\.(\d+)$:
```bat
@echo off
setlocal EnableDelayedExpansion
set string=version 1.0.988 is the latest release
set regex=^(\d+)\.(\d+)\.(\d+)$
rem 定义PowerShell脚本
set ps1="
[string]$string = '%string%'
$regex = '%regex%'
If ($string -match $regex) {
$new_string = $matches[1] + '.' + $matches[2] + '.' + $matches[3]
Write-Output $new_string
}
"
rem 使用PowerShell引擎执行脚本
for /f "delims=" %%i in ('powershell -noprofile -noninteractive -command "& {%ps1%}"') do set "new_string=%%i"
echo %new_string%
endlocal
```
在这个示例中,我们使用PowerShell引擎定义了一个正则表达式,并使用-match运算符匹配字符串,并使用$matches变量获取匹配到的子字符串。最后,使用Bat脚本的for /f命令将PowerShell脚本的输出赋值给变量new_string,从而实现了在Bat脚本中使用正则表达式的功能。
阅读全文