Вы можете попробовать следующий сценарий, обеспечивая входную строку как (цитируемую) аргумент командной строки:
set "STRING=%~1$"
set STRING="%STRING:\=" "%"
set /A "COUNT=-1"
for %%E in (%STRING%) do set /A "COUNT+=1"
echo Count of `\`: %COUNT%
Это заменяет каждый символ, который будет подсчитывали "
+ ПРОСТРАНСТВЕ + "
и охватывает всю строку между ""
, поэтому строка ввода aa\bb\cc\dd\
становится "aa" "bb" "cc" "dd" ""
. Получившаяся строка подается в цикл for
, который распознает отдельные элементы для итерации через - пять в этом случае. Переменная счетчика COUNT
инициализируется значением -1
, поэтому результатом является не количество итерированных элементов, а разделители, а именно символы \
, присутствующие в исходной строке.
Этот подход завершается с ошибкой, если строка содержит ?
или *
символов. Он также потерпел бы неудачу, если персонаж должен быть одним из следующих: "
, %
, =
, *
, ~
.
Возможный дубликат [Цикл для каждого символа в переменной строке BATCH] (http://stackoverflow.com/questions/15004825/looping-for-every-character-in-variable-string-batch) – geisterfurz007