【发布时间】:2019-03-31 09:52:19
【问题描述】:
我正在寻找一种批量获取字符串长度的方法。所以我从 jeb 读了answer,其中包含一些我不明白的神秘迹象。
在检索输入字符串时,他在函数strlen 中使用井号(#):
:strlen <resultVar> <stringVar>
(
[...]
set "s=!%~2!#"
[...]
)
有人能解释一下井号是什么意思吗?
据我了解,!%~2! 给出了调用的第二个参数。但是# 是干什么用的?为什么SET 后面的表达式会被" 括起来?
【问题讨论】:
-
最好用引号将
SET命令括起来。它保留特殊字符并防止您在命令末尾可能看不到的任何尾随空格。为什么不在 Jeb 的回答下方发表评论,问他的目的,而不是问你的问题。他经常来这里,可能会在一天之内回复你。 -
在
:label之后,空格可以是任何信息 - 它被忽略。在这里它表示子例程/函数期望的参数:<resultVar> <stringVar>两者都通过引用。附加的#是 IMO 那里通过添加一个字符将基于零的偏移量计算转换为长度。 -
#没有特殊含义。它只是一个字符,例如a。set命令只是将该字符附加到给定的字符串(可能是因为 LotPings 提到的原因)。 -
@LotPings,如果我没记错的话,我相信 Jeb 的速度会更快。我知道几年前在 DosTips 上讨论过它。
-
Dbenham 对SS64上使用的所有常用算法进行了深度速度测试
标签: batch-file window