Batch Was ist Part, eine Funktion?
set x=aaabbb
set FindLetter=a
set /a i=0
set /a Counter=0
:loop
call set "Part=%%x:~%i%,1%%
if "%Part%"=="%FindLetter%" set /a Counter+=1
set /a i+=1
if defined Part goto loop
set FindLetter=a
set /a i=0
set /a Counter=0
:loop
call set "Part=%%x:~%i%,1%%
if "%Part%"=="%FindLetter%" set /a Counter+=1
set /a i+=1
if defined Part goto loop
Hallo.
Ich habe bei Batch Zeichen zählen einen nützlichen Beitrag
zur Stringzählung gefunden.
Ich habe aber keine Idee, was %Part% ist bzw. konnte keine Antwort finden.
Es dürfte wohl keine Umgebungsvariable sein, aber könnte es eine Art
globale Funktion sein?
Ich wollte %Part% umbenennen, aber dann gab es keine richtigen
Ergebnisse, d.h. "0".
Bei EnableDelayedExpansion funktioniert die batch nicht, weil
der call Aufruf nicht abgearbeitet wird.
Wer weiß, was es ist und kann mir gegebenenfalls Tipps zu anderen
"Tools" dieser Art geben?
LG
Ich habe bei Batch Zeichen zählen einen nützlichen Beitrag
zur Stringzählung gefunden.
Ich habe aber keine Idee, was %Part% ist bzw. konnte keine Antwort finden.
Es dürfte wohl keine Umgebungsvariable sein, aber könnte es eine Art
globale Funktion sein?
Ich wollte %Part% umbenennen, aber dann gab es keine richtigen
Ergebnisse, d.h. "0".
Bei EnableDelayedExpansion funktioniert die batch nicht, weil
der call Aufruf nicht abgearbeitet wird.
Wer weiß, was es ist und kann mir gegebenenfalls Tipps zu anderen
"Tools" dieser Art geben?
LG
@echo off &setlocal
set x=aaabbb
set FindLetter=a
set /a i=0
set /a Counter=0
:loop
call set "Part=%%x:~%i%,1%%"
if "%Part%"=="%FindLetter%" set /a Counter+=1
set /a i+=1
if defined Part goto loop
echo %Counter%
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 168273
Url: https://administrator.de/contentid/168273
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
2 Kommentare
Neuester Kommentar
Aloha,
... Part ist eine normale, manuell gesetzte Variable, du kannst sie auch umbenennen (dann natürlich alle drei Vorkommnisse)
greetz André
... Part ist eine normale, manuell gesetzte Variable, du kannst sie auch umbenennen (dann natürlich alle drei Vorkommnisse)
set Part
= logisch: ausgewählte Variable wird gesetzt%Part%
= logisch: auch klar, oder if defined part
= Abfrage, ob die Variable Part
mit Inhalt definiert wurdegreetz André
Moin ProgFreund,
eine Rückfrage hätte ich noch...
Wieso meinst du "bei EnableDelayedExpansion arbeitet die Batch nicht"?
Ich komme - selbst bei völligem Verzicht auf die Stützrad-Variable %Part% nicht zu diesem Schluss.
Beispielaufruf und -ausgabe:
Musst nicht alles so blind glauben, was irgendwo in Internet-Foren geschrieben steht,
Grüße
Biber
eine Rückfrage hätte ich noch...
Wieso meinst du "bei EnableDelayedExpansion arbeitet die Batch nicht"?
Ich komme - selbst bei völligem Verzicht auf die Stützrad-Variable %Part% nicht zu diesem Schluss.
:: --DemoSchnipsel countLetters.cmd --
@echo off & setlocal enabledelayedExpansion
set "x=WTF sollte DelayedExpansion hier nicht funktionieren?"
set "FindLetter=a"
Set /a i=0
:loop
if "!x:~%i%,1!"=="%FindLetter%" set /a Counter+=1
set /a i+=1
if "!x:~%i%,1!" NEQ "" goto loop
echo Das Zeichen "%findletter%" wurde %Counter%mal im String "%x%" gefunden.
Beispielaufruf und -ausgabe:
>d:\temp\countLetters.cmd
Das Zeichen "a" wurde 2mal im String "WTF sollte DelayedExpansion hier nicht funktionieren?" gefunden.
Musst nicht alles so blind glauben, was irgendwo in Internet-Foren geschrieben steht,
Grüße
Biber