CODE: [Copy to clipboard]
SETLOCAL ENABLEDELAYEDEXPANSION
SET "TMPITEM=Hello World!"
:: FINDSTR /O法,添加了空判断以适应TMPITEM=空的情况
ECHO !TIME!
IF DEFINED TMPITEM (
FOR /F "skip=1 delims=:" %%I IN ('^(echo "%TMPITEM%"^&echo.^)^|findstr /o ".*"') DO (
SET /A "TMPITEM_LEN = %%I - 4"
)
) ELSE (
SET "TMPITEM_LEN=0"
)
ECHO !TIME!
ECHO %TMPITEM_LEN%
:: 逐个字符计数法
SET "TMPITEM_LEN=0"
ECHO !TIME!
IF DEFINED TMPITEM (
:GetLenLoop
SET "TMPTMP=!TMPITEM:~%TMPITEM_LEN%,1!" && SET /A "TMPITEM_LEN += 1" && GOTO :GetLenLoop
)
ECHO !TIME!
ECHO !TMPITEM_LEN!
ENDLOCAL
FINDSTR /o 法在我的机器上一般要80~100ms,而逐个字符计数法一般是<10ms~20ms左右。可能是因为FINDSTR毕竟是外部命令调用的缘故吧。