2015-06-18 212 views
0

找到正則表達式的最後一場比賽這是我的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 

任何幫助?

回答

1

由於似乎在源代碼的行首有標籤,您的條件必須包含它們,或者您可以搜索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"