Sie können das folgende Skript versuchen, die Bereitstellung der Eingabezeichenfolge als (zitiert) Argument Befehlszeile:
set "STRING=%~1$"
set STRING="%STRING:\=" "%"
set /A "COUNT=-1"
for %%E in (%STRING%) do set /A "COUNT+=1"
echo Count of `\`: %COUNT%
jedes Zeichen Dies ersetzt durch "
+ SPACE gezählt werden + "
und umschließt die gesamte Zeichenfolge zwischen ""
, so dass die Eingabezeichenfolge aa\bb\cc\dd\
"aa" "bb" "cc" "dd" ""
wird. Der resultierende String wird in eine for
-Schleife eingespeist, die einzelne Elemente erkennt, die durchlaufen werden sollen - fünf in diesem Fall. Die Zählervariable COUNT
wird mit einem Wert von -1
initialisiert. Das Ergebnis ist also nicht die Anzahl der iterierten Elemente, sondern die Trennzeichen, nämlich die in der ursprünglichen Zeichenfolge vorhandenen Zeichen \
.
Dieser Ansatz schlägt fehl, wenn die Zeichenfolge ?
oder *
Zeichen enthält. Es würde auch fehlschlagen, wenn das zu zählende Zeichen eines der folgenden ist: "
, %
, =
, *
, ~
.
Mögliches Duplikat von [Schleife für jedes Zeichen in variabler Zeichenkette BATCH] (http://StackOverflow.com/questions/15004825/Looping-for-every-character-in-Variable-String-Batch) – geisterfurz007