这是我的C ++头文件。我需要阅读 last #define NONPROD
并将定义的值设置为%nonprod%variable。在这种情况下,%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
任何帮助?
答案 0 :(得分:1)
由于源代码中行的开头似乎有标签,您的条件必须包含它们,或者您可以搜索近似行,然后,因为空格和制表符都是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"