Batch file 忽略IF查询中的选项卡

Batch file 忽略IF查询中的选项卡,batch-file,Batch File,我正在编写一个脚本,对批处理脚本中的每个注释行进行计数,但我遇到了一个问题。现在它只计算一行开始的每一个REM。如果一个(或多个)选项卡后有REM,则不计算行数 SETLOCAL EnableDelayedExpansion SETLOCAL enableextensions If "%1"=="" ( ECHO When starting the script, please pass the name of the script to be used as a parameter. GOT

我正在编写一个脚本,对批处理脚本中的每个注释行进行计数,但我遇到了一个问题。现在它只计算一行开始的每一个REM。如果一个(或多个)选项卡后有REM,则不计算行数

SETLOCAL EnableDelayedExpansion
SETLOCAL enableextensions

If "%1"=="" (
ECHO When starting the script, please pass the name of the script to be used as a parameter.
GOTO :eof
)

REM ---------------SETTING_VARIABLES------------------------START-----------------------------------------------------------------------
set Script_Name=%1
set LOGFILE_NAME=%DATE:~-7,2%_%1_SCP_V1.log
set CSV_NAME=%1_SCP_V1.csv
set REM_Counter=0
set ALL_Counter=0
REM ---------------SETTING_VARIABLES------------------------END-----------------------------------------------------------------------


REM ---------------COUNTING_ROWS------------------------START-----------------------------------------------------------------------
FOR /f "tokens=1 delims= " %%a in (.\%Script_Name%) DO (
    set result=false

    IF "%%a"=="REM" (
        set result=true
        )
    IF "%%a"=="@REM" (
        set result=true
        )
    IF "!result!"=="true" (
        set /a REM_Counter=!REM_Counter!+1
        set /a ALL_Counter=!ALL_Counter!+1
        ) else (
            set /a ALL_Counter=!ALL_Counter!+1
            )

)
echo %REM_Counter%
echo %ALL_Counter%
REM ---------------COUNTING_ROWS------------------------END-----------------------------------------------------------------------
示例Bat:

ECHO OFF

    REM 1
    REM 2
    REM 3
    @REM 4
    @REM 5
        REM 6
            REM 7
    bla 
    adwd
     wadg
     g
     awdaw
     daw

REM 6和7不计入REM_计数器。

只需在分隔符中添加制表符:
delims=

正如Compo在注释中所指出的,制表符和空格是默认的分隔符(并且
tokens=1
也是默认的),因此您可以省略这两个参数:

FOR /f %%a in (.\%Script_Name%) DO (

当然,为了便于阅读,您可以保留它们(我愿意)。

delims=
?如果sdelims=worked,您也可能希望将
/I
一起使用。非常感谢。顺便说一句,
Delims=
是默认值,因此您可以只规定您的令牌,但是
Tokens=1
也是默认值,因此您可以将它们都忽略@斯蒂芬,你应该把这个作为回答。