Batch file 批量获取字符串长度
我想这是一个简单的问题,但我只能找到复杂情况的答案。 我的场景是,我有一个名为AAA的变量,它没有空格,没有特殊字符,只有字母、数字,可能还有下划线。我需要检查AAA的长度是否不超过16个字符(16个字符或更少就可以了) 我怎样才能批量实现这一点 谢谢,您可以这样做:Batch file 批量获取字符串长度,batch-file,Batch File,我想这是一个简单的问题,但我只能找到复杂情况的答案。 我的场景是,我有一个名为AAA的变量,它没有空格,没有特殊字符,只有字母、数字,可能还有下划线。我需要检查AAA的长度是否不超过16个字符(16个字符或更少就可以了) 我怎样才能批量实现这一点 谢谢,您可以这样做: if "%AAA:~16%" == "" echo "Length is not bigger than 16 characters." 或 这里有几个计算字符串长度的函数: 因此,要检查字符串长度是否大于16: @echo o
if "%AAA:~16%" == "" echo "Length is not bigger than 16 characters."
或
这里有几个计算字符串长度的函数: 因此,要检查字符串长度是否大于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
谢谢你的快速回复。这正是我需要的!
@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