|
|
2楼说得很全面了
如果一定要用纯批处理,可以试下这个函数,对于包含空格和双引号的字符串,结果是正确的
来源于互联网,相当精巧
@echo off
set "input=Hello "World""
call :getstrlen input len
if defined len echo -%len%-
pause
exit
REM 获取变量中字符串长度,存入变量
REM call :getstrlen str len
:getstrlen
if "%~1" equ "" goto :eof
if "%~2" equ "" goto :eof
setlocal enabledelayedexpansion
set "$=!%1!#"
set "len="&for %%a in (4096 2048 1024 256 128 64 32 16 8 4 2 1) do (if "!$:~%%a,1!" NEQ "" set/a len+=%%a&set "$=!$:~%%a!" &if "!$:~1!"=="" goto getstrlenok)
set "s=!s!fedcba9876543210" &set/a "len+=0x!s:~16,1!"
:getstrlenok
endlocal&set/a "%2=%len%"&goto:eof |
|