@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "delims==" %%i IN ('set found 2^>nul') DO SET "%%i="
SET found=FEATURE_
SET /a count=0
(
FOR /f "delims=" %%i IN ('findstr /n "$" ^<feature.txt') DO (
SET feature=%%i
SET line=!feature:*:=!
IF DEFINED line (
SET feature=!line:*FEATURE_=!
IF "!line!"=="!feature!" (ECHO(!line!) ELSE (
FOR /f %%f IN ("!feature!") DO SET feature=%%f&SET found|FINDSTR /e "=%%f" >NUL
IF ERRORLEVEL 1 (
ECHO(!line!
SET found!count!=!feature!
SET /a count+=1
)
)
) ELSE (ECHO()
)
) >newfile.txt
对于每一行,包括空行,
- 给行编号,然后去掉数字 如果原始为空,则生成一个空行
- 否则,查看该行是否包含目标文本,如果没有则回显
- 否则,查看target后面的字符串是否已经找到。
- 如果没有,则生成该行并将新的目标后缀记录在
foundcounter
但
除了 Aacin 的评论,也许你应该坐下来喝杯热茶,想想你在这里真正想要什么。
如果你按照你说的做,那么序列
#ifdef FEATURE_ABCD
something
endif
或者
#ifdef FEATURE_ABCD something
可能会产生你并不真正想要的东西——以及怎么样
#ifdef FEATURE_ABCD
...
#define FEATURE_ABCD
...
#ifdef FEATURE_ABCD
??