批处理,关于特殊符号的疑问
@echooffset/pstr=请输入任意长度的字符串(汉字也为1):ifnotdefinedstr(echo字符串长度为:0&pause>nul&exit)setnu...
@echo off
set /p str=请输入任意长度的字符串(汉字也为1):
if not defined str (echo 字符串长度为:0&pause>nul&exit)
set num=0
:check
set /a num+=1
set str=%str:~0,-1%
if defined str goto check
echo 字符串长度为:%num%
pause>nul
按理说,输入多长的字符串,就能显示该字符串的长度,但是,会有这种情况,那就是如果输入
^&^&^&^&^&^&
他也只会显示
字符串长度为:1
这怎么破? 展开
set /p str=请输入任意长度的字符串(汉字也为1):
if not defined str (echo 字符串长度为:0&pause>nul&exit)
set num=0
:check
set /a num+=1
set str=%str:~0,-1%
if defined str goto check
echo 字符串长度为:%num%
pause>nul
按理说,输入多长的字符串,就能显示该字符串的长度,但是,会有这种情况,那就是如果输入
^&^&^&^&^&^&
他也只会显示
字符串长度为:1
这怎么破? 展开
3个回答
展开全部
@echo off
set /p "str=请输入任意长度的字符串(汉字也为1):"
if not defined str (echo 字符串长度为:0&pause>nul&exit)
set num=0
:check
set /a num+=1
set "str=%str:~0,-1%"
if defined str goto check
echo 字符串长度为:%num%
pause>nul
set /p "str=请输入任意长度的字符串(汉字也为1):"
if not defined str (echo 字符串长度为:0&pause>nul&exit)
set num=0
:check
set /a num+=1
set "str=%str:~0,-1%"
if defined str goto check
echo 字符串长度为:%num%
pause>nul
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把set str=%str:~0,-1% 改为:
set "str=%str:~0,-1%"
set "str=%str:~0,-1%"
追问
是正解,我还想知道为什么
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没启用setlocal
追问
这个和变量延迟没有关系吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询