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, 3907 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst In Batch variable DOS-Funktion von "größer" und "kleiner" Zeichen unterdrücken (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

JavaScript
AngularJS Variable über Input in Funktion ausführen

Frage von badkilla zum Thema JavaScript ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...