Batch file 忽略IF查询中的选项卡
我正在编写一个脚本,对批处理脚本中的每个注释行进行计数,但我遇到了一个问题。现在它只计算一行开始的每一个REM。如果一个(或多个)选项卡后有REM,则不计算行数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
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
也是默认值,因此您可以将它们都忽略@斯蒂芬,你应该把这个作为回答。