批处理:使用batchRex.exe提取字符串并存储在变量中

时间:2016-05-20 12:35:11

标签: windows batch-file

我有这个片段,并询问它为什么不起作用(输出空)。这个特殊的batchRex.exe是一个问题,还是我的脚本中有错误?

set "workspace=C:\Projects\myProject"
for /f "usebackq delims=" %%i in ('batchRex.exe /file:"%workspace%\AssemblyInfo.cs" /pattern:"AssemblyFileVersion\("^(\d+\.\d+\.\d+\.\d+^)"') do set VAR=%%i
echo %VAR%

文件内容AssemblyInfos.cs:

...
[assembly: AssemblyFileVersion("01.01.01.01")]
....

我想在变量中只设置此字符串01.01.01.01,即版本。

batchRex.exe:https://www.administrator.de/wissen/batchrex-regular-expressions-batch-nutzen-oder-extrahiert-bestimmten-text-212057.html

如果有人有另一种方法来提取这个字符串,那也没关系,但我应该用批处理文件脚本中的命令执行。

1 个答案:

答案 0 :(得分:1)

如果[assembly: AssemblyFileVersion(是唯一的,那么

不需要正则表达式:

@echo off
set "workspace=C:\Projects\myProject"
for /f "tokens=2 delims=()" %%i in ('type "%workspace%\AssemblyInfo.cs"^|findstr /b /c:"[assembly: AssemblyFileVersion("') do set ver=%%i
echo %ver:"=%

/b表示搜索字符串必须位于行的开头
/c表示,将以下字符串作为一个整体(默认情况下,它会搜索以[assembly:AssemblyFileVersion(

开头的任何行