使用批处理命令
问题描述:
找到正则表达式的最后一场比赛这是我的C++头文件。我需要阅读最后#define NONPROD
并设置定义%nonprod%变量的值。在这种情况下,%nonprod%应该包含值1
。 %file%
是文件路径。使用批处理命令
#if PROD == 1
#define NONPROD 0
#else
#define NONPROD 1
#endif
这是我创建的批处理脚本。似乎正则表达式有问题。
for /f "usebackq tokens=3" %%i in (`findstr "/c:^ *#define *NONPROD *[01]$" /r "%file%" 2^>nul`) do set nonprod=%%i
任何帮助?
答
由于似乎在源代码的行首有标签,您的条件必须包含它们,或者您可以搜索aproximate行,然后,因为for /f
命令中的空格和制表符都是分隔符,请检查线令牌匹配搜索条件
for /f "tokens=1-4" %%a in ('
findstr /r /c:"^.*#define.*NONPROD.*[0-9][0-9]*.*$" "%file%" 2^>nul
') do if "%%a"=="#define" if "%%b"=="NONPROD" if "%%d"=="" set "nonprod=%%c"