批量获取字符串长度

时间:2014-08-08 08:16:44

标签: batch-file

我想这是一个简单的问题,但我只能找到复杂情况的答案。 我的情况是我有一个名为AAA的变量,它没有空格,没有特殊字符,只有字母,数字和下划线。我需要检查AAA的长度是否不超过16个字符(16个字符或更少可以)。

我如何批量实现这一目标?

谢谢,

2 个答案:

答案 0 :(得分:2)

你可以这样做:

if "%AAA:~16%" == "" echo "Length is not bigger than 16 characters."

或者

if not "%AAA:~16%" == "" echo "Length is bigger than 16 characters."

答案 1 :(得分:0)

这里有一些计算字符串长度的函数:http://ss64.org/viewtopic.php?id=424

所以要检查他的字符串长度是否大于16:

@echo off
set AAA=something

call :strlen0.3 AAA strlen
 if %strlen% GTR 16 (
    echo has more than 16 characters
 ) else (
    echo has less than 16 characters
 )

 exit /b 0


:strlen0.3  StrVar  [RtnVar]
  setlocal EnableDelayedExpansion
  set "s=#!%~1!"
  set "len=0"
  for %%A in (2187 729 243 81 27 9 3 1) do (
    set /A mod=2*%%A
    for %%Z in (!mod!) do (
        if "!s:~%%Z,1!" neq "" (
            set /a "len+=%%Z"
            set "s=!s:~%%Z!"

        ) else (
            if "!s:~%%A,1!" neq "" (
                set /a "len+=%%A"
                set "s=!s:~%%A!"
            )
        )
    )
  )
  endlocal & if "%~2" neq "" (set %~2=%len%) else echo **%len%**
exit /b