progfreund
Goto Top

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

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? face-smile

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 

Content-Key: 168273

Url: https://administrator.de/contentid/168273

Printed on: April 23, 2024 at 22:04 o'clock

Member: Skyemugen
Skyemugen Jun 19, 2011 at 18:33:25 (UTC)
Goto Top
Aloha,

... 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 face-wink
if defined part = Abfrage, ob die Variable Part mit Inhalt definiert wurde

greetz André
Member: Biber
Biber Jun 19, 2011 at 22:13:46 (UTC)
Goto Top
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.

:: --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, face-wink

Grüße
Biber