使用批处理命令

问题描述:

找到正则表达式的最后一场比赛这是我的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"