Is it possible to find out how may characters a user has typed after reaching a SET /P prompt? If it is possible, which I'm assuming it is, I'm thinking I'd need to use a FOR loop, but I'm not sure how to set it up.
Any help would be appreciated.
![Wink :wink:](./images/smilies/icon_wink.gif)
Moderator: DosItHelp
Code: Select all
set "$vl=A%%~b"
set "$l=0"
for %%! in (
12, -1, 0
) do set /a "$l|=1<<%%~!" &for %%? in (
"!$l!"
) do if /i ["!$vl:~%%~?,1!"] == [""] (
set /a "$l&=~1<<%%~!"
)
set "%%~a=!$l!"
Ed Dyreen wrote:'
This is the algorithm, it's gonna take time to figure it out, just ask, anything
Thank dbenham, for a working example, see stringlen functionCode: Select all
set "$vl=A%%~b"
set "$l=0"
for %%! in (
12, -1, 0
) do set /a "$l|=1<<%%~!" &for %%? in (
"!$l!"
) do if /i ["!$vl:~%%~?,1!"] == [""] (
set /a "$l&=~1<<%%~!"
)
set "%%~a=!$l!"![]()
viewtopic.php?f=3&t=1827&start=0
Code: Select all
@echo off
set "var=How long is this ?" &call :strLen var
pause
exit /b
:strLen string len -- returns the length of a string
setlocal enabledelayedexpansion
set "str=A!%~1!"
set "len=0"
for /l %%A in (12,-1,0) do (
set /a "len|=1<<%%A"
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"
)
endlocal&if "%~2" neq "" (set /a %~2=%len%) else echo:%len%
exit /b
Code: Select all
18
Druk op een toets om door te gaan. . .
Works perfectly! Thank you!Ed Dyreen wrote:'
Use ben's function, now let's see
'
This should work![]()
Code: Select all
@echo off
set "var=How long is this ?" &call :strLen var
pause
exit /b
:strLen string len -- returns the length of a string
setlocal enabledelayedexpansion
set "str=A!%~1!"
set "len=0"
for /l %%A in (12,-1,0) do (
set /a "len|=1<<%%A"
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"
)
endlocal&if "%~2" neq "" (set /a %~2=%len%) else echo:%len%
exit /bCode: Select all
18
Druk op een toets om door te gaan. . .
Code: Select all
set "$sErr=%%~b" &set /a "$sErr|=0"
Code: Select all
set /a "$sErr=%%~b0>>3"