Использование # с SET в пакетных программах - PullRequest
0 голосов
/ 26 октября 2018

Я искал способ получить длину строки в пакете. Поэтому я прочитал ответ от Джеба, который содержит некоторые загадочные знаки, которых я не получаю.

Он использует знак фунта (#) в функции strlen при извлечении входной строки:

:strlen <resultVar> <stringVar>
(   
[...]
    set "s=!%~2!#"
[...]
)

Может кто-нибудь объяснить, что означает знак фунта? Насколько я понимаю, !%~2! дает второй параметр от вызова. Но для чего используется # и почему выражение после SET заключено в "?

1 Ответ

0 голосов
/ 27 октября 2018

Я использовал хеш-символ # в функции strlen для решения двух задач.

Не удается разделить переменную с помощью :~n,m snytax для пустых (неопределенных) переменных, добавление символа предотвращает эту проблему.

И результатом алгоритма является длина строки минус одна из переменных s, добавляя символ для компенсации результата.

Почему я использовал хеш?
Единственная причина, которую я помню, - это использование символа без какой-либо специальной пакетной функциональности, и он хорошо виден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...