Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Was ist Part, eine Funktion?

Frage Entwicklung Batch & Shell

Mitglied: Progfreund

Progfreund (Level 1) - Jetzt verbinden

19.06.2011, aktualisiert 20:28 Uhr, 3930 Aufrufe, 2 Kommentare

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?

LG

01.
@echo off &setlocal 
02.
 
03.
set x=aaabbb 
04.
set FindLetter=a 
05.
 
06.
set /a i=0 
07.
set /a Counter=0 
08.
:loop 
09.
call set "Part=%%x:~%i%,1%%" 
10.
if "%Part%"=="%FindLetter%" set /a Counter+=1 
11.
set /a i+=1 
12.
if defined Part goto loop 
13.
 
14.
echo %Counter% 
15.
pause 
Mitglied: Skyemugen
19.06.2011 um 20:33 Uhr
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
if defined part = Abfrage, ob die Variable Part mit Inhalt definiert wurde

greetz André
Bitte warten ..
Mitglied: Biber
20.06.2011 um 00:13 Uhr
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.

01.
:: --DemoSchnipsel countLetters.cmd -- 
02.
@echo off & setlocal enabledelayedExpansion 
03.
set "x=WTF sollte DelayedExpansion hier nicht funktionieren?" 
04.
set "FindLetter=a" 
05.
Set /a i=0 
06.
:loop 
07.
if "!x:~%i%,1!"=="%FindLetter%" set /a Counter+=1 
08.
set /a i+=1 
09.
if "!x:~%i%,1!" NEQ "" goto loop 
10.
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
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch Programm (Ping funktion) (1)

Frage von MedicalAd zum Thema Batch & Shell ...

Batch & Shell
gelöst EQU - GLEICH - BATCH (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Windows 10 Batch für Datum und Uhrzeit setzen (18)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (51)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...