如何在批处理文件中获得字符串长度?

如何在批处理文件中获得字符串长度?

在批处理文件中获取字符串的长度似乎没有一种简单的方法。例如,

SET MY_STRING=abcdefg
SET /A MY_STRING_LEN=???

的字符串长度如何查找?MY_STRING?

如果字符串长度函数处理字符串中的所有可能字符(包括转义字符),则加分如下:!%^^()^!.


慕丝7291255
浏览 8504回答 3
3回答

白衣染霜花

由于没有针对字符串长度的内置函数,您可以编写自己的函数,如下所示:@echo&nbsp;off setlocal set&nbsp;"myString=abcdef!%%^^()^!" call&nbsp;:strlen&nbsp;result&nbsp;myString echo&nbsp;%result% goto&nbsp;:eof :strlen&nbsp;<resultVar>&nbsp;<stringVar> (&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;setlocal&nbsp;EnableDelayedExpansion &nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;"s=!%~2!#" &nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;"len=0" &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;%%P&nbsp;in&nbsp;(4096&nbsp;2048&nbsp;1024&nbsp;512&nbsp;256&nbsp;128&nbsp;64&nbsp;32&nbsp;16&nbsp;8&nbsp;4&nbsp;2&nbsp;1)&nbsp;do&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;"!s:~%%P,1!"&nbsp;NEQ&nbsp;""&nbsp;(&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;/a&nbsp;"len+=%%P" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;"s=!s:~%%P!" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;) ) (&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;endlocal &nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;"%~1=%len%" &nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;/b )这个函数总是需要13个循环,而不是一个简单的strlen函数,它需要strlen循环。它处理所有字符。

犯罪嫌疑人X

您可以通过将字符串写入文件,然后获取文件的长度,在批处理文件中执行两行操作。您只需减去两个字节,就可以计算添加到末尾的自动CR+LF。假设您的字符串位于一个名为strvar:ECHO&nbsp;%strvar%>&nbsp;tempfile.txt FOR&nbsp;%%?&nbsp;IN&nbsp;(tempfile.txt)&nbsp;DO&nbsp;(&nbsp;SET&nbsp;/A&nbsp;strlength=%%~z?&nbsp;-&nbsp;2&nbsp;)字符串的长度现在位于一个名为strlength.更详细的是:FOR %%? IN (filename) DO ( ...获取有关文件的信息SET /A [variable]=[expression]*对表达式进行数值计算%%~z?*获取文件长度的特殊表达式要将整个命令混成一行:ECHO&nbsp;%strvar%>x&FOR&nbsp;%%?&nbsp;IN&nbsp;(x)&nbsp;DO&nbsp;SET&nbsp;/A&nbsp;strlength=%%~z?&nbsp;-&nbsp;2&del&nbsp;x
打开App,查看更多内容
随时随地看视频慕课网APP