我有这个片段,并询问它为什么不起作用(输出空)。这个特殊的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,即版本。
如果有人有另一种方法来提取这个字符串,那也没关系,但我应该用批处理文件脚本中的命令执行。
答案 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(