Top-Themen

Aktuelle Themen (A bis Z)

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

FOR-Schleife, Wert-Zuweisung eines SUB-Strings

Frage Entwicklung Batch & Shell

Mitglied: Juergenl

Juergenl (Level 1) - Jetzt verbinden

06.03.2006, aktualisiert 22.11.2006, 11568 Aufrufe, 9 Kommentare

FOR-Schleife, SET-Anweisung, SUB-String

Guten Tag allerseits! (ich bin hier Neuling, - erlaubt mir bitte folgende Anfängerfrage ... )

zum TEST einer FOR-Schleife habe ich mir ein kleines Batchfile geschrieben, welches aus drei Textstrings (xray yest zulu) drei Variable kreieren soll, die jeweils mit dem ANFANGS-Buchstaben des Strings initialisiert werden sollen.

Dabei wollte ich das Substring-Konstrukt '%variable:~n,m%' verwenden. So also meine Befehlszeile in der Batchdatei:

FOR %%i IN (xray,yest,zulu) DO SET %%i_wert=%%i:~0,1%

Danach weist der Befehl 'SET' aber NICHT die angestrebten Ergebniss zu (xray_wert:=x pp), sondern eher die SYNTAX der Substring-Anweisung, also:

xray_wert=xray:~0,1
yest_wert=yest:~0,1
zulu_wert=zulu:~0,1

Nach unzähligen Experimenten mit ALLEM, wovon ich glaubte, es schon verstanden zu haben, frage ich nun lieber die hier versammeltemnExperten: Worin besteht mein Denkfehler?

Danke im Voraus und beste Grüße

Jürgen
<Juergenl>
Mitglied: maneich
07.03.2006 um 02:13 Uhr
Hallo,

in einer Batch in der for-Schleife wird hier i mit %%i aufgerufen, also sollte

%%i:~0,1% eigentlich %%%i:~0,1% sein.

MfG maneich
Bitte warten ..
Mitglied: Juergenl
07.03.2006 um 07:25 Uhr
Hallo,

in einer Batch in der for-Schleife wird hier
i mit %%i aufgerufen, also sollte

%%i:~0,1% eigentlich %%%i:~0,1% sein.

MfG maneich

Hallo maneich, danke für Deinen Hinweis!

Leider ändert das zusätzliche '%' aber nichts an dem Effekt, daß NICHT der vorgesehene Wert zugewiesen wird, sondern die Substring-ANWEISUNG. So sieht danach der von der Batch erzeugte Befehl aus:

C:\TEMP>SET xray_wert=%xray:~0,1%

Der Fehlergrund muß also tiefer liegen ...

Beste Grüße

Jürgen
Bitte warten ..
Mitglied: maneich
07.03.2006 um 14:07 Uhr
Hallo,

kann das leider jetzt nicht testen, aber probiere mal folgendes

1. setze vorne und hinten noch %
%%%%i:~0, 1%%

oder

2. über call

FOR %%i IN (xray,yest,zulu) DO call :var %%i

:var
set x=%1
SET %1_wert=%x:~0,1%

MfG maneich
Bitte warten ..
Mitglied: Biber
07.03.2006 um 14:36 Uhr
Moin JuergenL,

01.
:: -------DelayedDemo.Bat 
02.
@echo off & setlocal enableDelayedExpansion 
03.
set "xray=Alpha" & set "yest=Beta" & set "Zulu=Gamma" 
04.
 
05.
FOR %%i IN (xray,yest,zulu) DO SET "%%i_wert=!%%i:~0,1! 
06.
set x & set y & set z 
07.
:: -------DelayedDemo.Bat
Ergebnis:
01.
xray=Alpha 
02.
xray_wert=A 
03.
yest=Beta 
04.
yest_wert=B 
05.
Zulu=Gamma 
06.
zulu_wert=G
HTH Biber
[Edit] Bullshit...Frage falsch verstanden. siehe unten. [/Edit]
Bitte warten ..
Mitglied: Biber
07.03.2006 um 20:13 Uhr
Sorry, JuergenL,

hatte zu flüchtig gelesen beim ersten Mal und entsprechend viel zu sehr um die Ecke gedacht.

Das Ganze löst also schon ein Oneliner. Aus optischen Gründen auf zwei Zeilen verteilt.

01.
:: -------DelayedDemo.Bat 
02.
@echo off & setlocal EnableDelayedExpansion 
03.
FOR %%i IN (xray,yest,zulu) DO set "tmpvar=%%i" &  set "%%i_wert=!tmpvar:~0,1!" & echo %%i_wert: [!%%i_wert!] 
04.
:: -------DelayedDemo.Bat
Output
01.
>DelayedDemo 
02.
xray_wert: [x] 
03.
yest_wert: [y] 
04.
zulu_wert: [z] 
05.
 
06.
Anmerkung: Da ich bei mir DelayedExpansion als CMD-Standard eingestellt habe, kann ich es sogar über <u>eine</u> CMD-Zeile machen: 
07.
>@FOR %i IN (xray,yest,zulu) DO @set "tv=%i" & @set "%i_wert=!tv:~0,1!" & @echo %i_wert: [!%i_wert!] 
08.
 
09.
xray_wert: [x] 
10.
yest_wert: [y] 
11.
zulu_wert: [z]
Über maneichs Ansatz OHNE DelayedExpansion und mit Sub-Call geht es natürlich auch.
Gruß Biber
Bitte warten ..
Mitglied: Juergenl
08.03.2006 um 10:53 Uhr
Hallo allerseits,

besten Dank für beiderseitige Hilfe, die mir eine Reihe von Aha-Erlebnissen beschert hat. (Da habe ich in meiner Unwissenheit offenbar ein größeres Faß aufgemacht .. gg .. )

Ich habe Eure Batch-Clips ausgeführt: Maneich, Deine zweite Varianten führte (in Varianten) hier auch wieder zur Zuweisung von "Syntax-Elementen", also Tilde, Doppelpunkt pp.

Biber, Deine BEIDEN Demo-Clips tun GENAU DAS, was ich ursprünglich gern erzielt hätte!

Ich bin froh über jeden (!) Hinweis, wie man so etwas macht. Mein Problem besteht allerdings darin, daß ich zur Zeit noch Mühe habe, solch anspruchsvollere Anweisungen Schritt für Schritt nachzuvollziehen und zu verstehen, - d.h. künftig "selber machen zu können".

Das Rüstzeug der DOS-Hilfen allein ist leider etwas sperrig, die einschlägigen Angebote im Netz kranken meist daran, daß sie stereotyp Formulierungen aus jenen Hilfetexten wiederholen: Meist also "Statements", ohne Didaktik zu den Hintergründen.

Ich habe zu diesem anspruchsvolleren Stoff bislang noch kein Tutorial gefunden. ( - die hier im Forum angebotenen habe ich mir natürlich zu Gemüte geführt.) Laßt Ihr mich bitte einmal wissen, ob es dafür ein Standard-Werk gibt, - möglichst in Deutsch.

Auf mein spezielles Zuweisungs-Problem, mit dem ich eigentlich "nur" an einem Uhrzeit-Algorithmus basteln wollte, komme ich später gern noch einmal zurück.

Fürs erste nochmals besten Dank und freundliche Grüße

Jürgen
Bitte warten ..
Mitglied: Biber
08.03.2006 um 18:51 Uhr
Moin Jürgen,

ich gebe Dir Recht.. die Infos zum Thema "DelayedExpansion" sind ein bisschen dürftig.
Wir hatten das neulich mal kurz in dem Beitrag Set /p innerhalb von IF von Kollege yashi.. da wird es vielleicht ein bisschen deutlicher.

Ich habe offen gestanden auch ein bisschen versucht, dieses Thema "DelayedExpansion" ein bisschen flach zu halten - in einem meiner Batch-Tutorials (Tut II mit "NumberMe.bat") habe ich dieses Feature ja verwendet... aber musste auch da mit unerwarteten Seiteneffekten leben. Dieses Feature ist -in sinnvoller Dosierung- durchaus nützlich, aber an einigen Stellen schlicht und einfach buggy implementiert..
Ich werde aber noch zu dem Thema DelayedExpansion noch mal ein paar Zeilen hier als Tutorial posten und dann auch gerne yashis Frage und Dein Beispiel-Problem hier im Beitrag zitieren.

Hatte es bisher nicht so eilig damit, weil ich mir gar nicht sicher war, dass sich auch andere Anwender für dieses Thema interessieren.

Grüße Biber
Bitte warten ..
Mitglied: ahe
22.11.2006 um 17:32 Uhr
Windows 2003 Shell Scripting 2. Aufl.
Armin Hanisch

Addison-Wesley

Gibt einen guten Überblick und liest sich flüssig

Ansonsten ist das Angebot für deutsche Scripting-Literatur entweder auf das Internet beschränkt oder bezieht sich auf VBS/WSH, wobei es dann meist eher was für Entwickler, als für Admins taugt (meist sehr OOP lastig...)

mfg
Axel
Bitte warten ..
Mitglied: Biber
22.11.2006 um 18:43 Uhr
....hmm,

ich wüsste gar nicht, wie ich für knapp 60 kombinierbare interne und externe CMD-Befehle so einen 320-Seiten-Wälzer zusammenschreiben könnte...
Selbst wenn ich noch ein paar Oneliner einstreue...

Nein, was ich wirklich sagen wollte:
@ahe: Danke für den Link, Axel.

@All: Bei Addison-Wesley gibt es auch eine kurze PDF-Leseprobe zum Download.

Lockerer geschrieben finde ich allerdings die Zeilen auf seiner Homepage.
Extra-Tipp: Download der Dateien zum Buch mit allen Codeschnipseln und ein paar Freeware-Utilities.

...und diesen Beitrag schließe ich jetzt mal.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mehrere Werte aus FOR Schleife in eine Variable
gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Also ich komm einfach nicht weiter. Folgendes Problem. Meine aktueller String lautet so: Das Funktioniert auch. Nur ist ...

Batch & Shell
Einen String in einer TXT finden, nur einen Teil als Variable setzen, FOR Schleife in FOR Schleife
gelöst Frage von KriegstreiberBatch & Shell3 Kommentare

Guten Abend alle miteinander, nunja wenn ich hier die Sufu nutze findet man etliches zu dem Thema, aber ich ...

PHP
Explode, split - String teilen und in Table mit for-schleife
gelöst Frage von ProtectedPHP4 Kommentare

Hallo, ich habe folgendes Problem: Ich würde gerne folgenden String teilen: .com Domain#8,00 Format: Produkt#Preis Hierbei ist zu beachten, ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Neue Wissensbeiträge
Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 30 MinutenSicherheit1 Kommentar

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 54 MinutenSicherheit9 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 7 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 20 StundenMac OS X4 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell27 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1025 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...