Yo conozco el siguiente método...
No digo que sea mejor ni nada por el estilo, pero es otra variante.
Código [Seleccionar]
@echo off
setlocal enabledelayedexpansion
set len=0
set max=20
set texto=hasta 20 caracteres.
set "texto=%text: =_%"
:read
if not "!texto:~%len%,1!"== "" (
set /a len+=1
goto read
)
if %texto% GTR %max% (has pasado el limite de 20 caracteres.)
pause>nul
No digo que sea mejor ni nada por el estilo, pero es otra variante.