批处理如何获取字符串长度

set "input="
set /p input=-^> 请输入:
我要获取输入的这个字符串的长度,即%input%值的长度

第1个回答  2013-04-09
@echo off
setlocal enabledelayedexpansion
set "input="
set /p input=-^> 请输入:
set n=0
:her
set u=!input:~%n%,1!
if not "!u!"=="" (set/a n+=1
goto her
) else (echo 长度:%n%)
pause>nul追问

setlocal enabledelayedexpansion

不用这个怎么写?

追答

@echo off
set "input="
set /p input=-^> 请输入:
set n=0
:her
call set u=%%input:~%n%,1%%
if not "%u%"=="" (set/a n+=1
goto her
) else (echo 长度:%n%)
pause>nul

追问

无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。报这个错

追答

BAIDU复制时无法按现有的格式,请检查每一排命令后是否有空格。提示无效数字,说明在计算变量n值带入了非数字,极有可能是在赋值set n=0或计算set/a n+=1时有空格带入。

本回答被网友采纳