Batch file Wierd使用脚本查找字符串长度的结果?
当我输入一些carot(Batch file Wierd使用脚本查找字符串长度的结果?,batch-file,string-length,Batch File,String Length,当我输入一些carot(^)测试它时,我正在测试由Unclesmeat提交的代码(Unclesmeat引用),它产生了一些有趣的结果 蓝蝙蝠 Len.bat的测试 忽略doubleMore?,其中我只是返回,没有输入任何内容,模式是: 0 十二, 十二, 一, 一, 十三, 十三, 二十二 二十二 十三, 十三, 二, 二, 十四, 十四, 二十三 二十三 十四, 十四, 二十三 二十三 十四, 十四, 二十三 二十三 每一个奇怪的事件都会提示我加倍更多?,这就是为什么它加倍了,但从其他方面看,
^
)测试它时,我正在测试由Unclesmeat提交的代码(Unclesmeat引用),它产生了一些有趣的结果
蓝蝙蝠
Len.bat的测试
忽略doubleMore?
,其中我只是返回,没有输入任何内容,模式是:
更多?
,这就是为什么它加倍了,但从其他方面看,这些结果都很奇怪。我认为它必须与代码中的以下行做些什么,但似乎没有关系
对这些不规则的数据有什么解释吗?或者这仅仅是cmd的一个方面……有很多原因导致代码在插入符号时完全失败。
首先,尝试调用批处理的方式将失败 插入符号转义下一个字符,并从行中删除。
行端的单个插入符号会转义行端(称为多行插入符号),这就是为什么cmd.exe会显示提示
更多?
。
这将适用于所有奇数个插入符号
用七个插入符号取样
length ^^^^^^^
More?
More?
cmd.exe将使用以下字符串调用长度bat
换行符将从%1
参数中拆分,因此在%1中只有^^
但现在你知道这部分完全失败了
set s=%1
set length=0
当它扩展到
设置=^^^
设置长度=0
由于最后一个插入符号现在是一个多行插入符号,它将追加到行中设置长度=0
因此,变量s
中现在是内容^set length=0
这是行不通的 即使在该块中,
%s:~1%
也会导致进一步的问题,因为当s
包含插入符号时(当使用8个插入符号length^^^^
时),它也会扩展到多行插入符号
有关插入符号的更多说明,请阅读
我在序列的第7部分找到了原因:
set s=%1 set length=0
长度为12个字符。但这并不能解释后面的数字。
length ^^^^^^^
More?
More?
set s=%1
set length=0
if defined s (
set s=%s:~1%
set /A length += 1
goto count
)