Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

HowTo For Schleife mit TokenTrenner AnführungsZeichen ( double quotes as Delimiter )

Mitglied: pieh-ejdsch

Wie heisen die Dinger noch gleich? - doppelte Hochkommata; Gänsefüsschen oder doppelte Anführungszeichen.
Es gibt sicher noch ein paar Varianten dieses Zeichen " zu benennen.

Moin Admins,

Die AnführungsZeichen innerhalb einer Variable "Zeichen"Kette" mussten Vorerst mit dem Befehl Set separiert werden.

In Anlehnung an das Tutorial zur For Schleife
Für den Inhalt von Dateien macht sich aber der Tokentrenner delims= in der For-Schleife etwas einfacher.
Das AnführungsZeichen in einer Forschleife lässt sich mithilfe des Caret (Zirkumflex) Escapen als delimiter einsetzen.
Paradoxerweise müssen dafür um die Optionen der For /f - Schleife die doppelten Anführungszeichen weggelassen werden.

In der BefehlszeilenReferenz For geht es um Analyseschlüsselwörter.
Ich Verwende den Begriff Optionen wie im For Tutorial und in der CMD-Hilfe Help For

Bei einer Regulären Forschleife werden die AnführungsZeichen um die Optionen gesetzt, welche wiederum nur Notwendig sind, weil im For-Befehl Sonderzeichen enthalten sind.
Das Gleichheitszeichen = ist schon der erste Grund dafür.
Dieser Umstand macht die Nutzung des Caret zur Maskierung (als Escape-Funtion) des Nächsten Zeichens unmöglich.

Sehen wir nun erstmal was für SonderZeichen eine Sonderbehandlung benötigen.
In der CMD Hilfe CMD /? ist eine SonderZeichenbehandlung angegeben.
nicht zu vergessen sind auch Befehls- und Verkettungszeichen
und zuletzt nicht Auszulassen das doppelte AnführungsZeichen
Da jetzt die AnführungsZeichen um die Optionen fehlen müssen diese SonderZeichen "Escaped" werden.

Beispiele am Promt

Mir ist bewusst, dass die Option delims im täglichen Umgang mit Forschleifen als letztes in den Optionen aufgeführt wird.
Die Frage nach dem "Warum Normal zuletzt" ist leicht beantwortet:

Das Leerzeichen und auch der Tab wird eh nur in den Delimiter aufgenommen wenn delims als letztes in den Optionen auftaucht.
Nur das Leerzeichen muss als letzter Delimeter angegeben werden.
Wenn delims dann NICHT als letztes in den Optionen genommen wird möchte man Kein LeerZeichen oder TAB als Trenner haben.

so werden Beide Varianten gleich Funktionieren


für Variablen mit einer ungeraden Anzahl von AnführungsZeichen empfiehlt es sich immer die Verzögerte Auflösung der Variable zu Verwenden
in einer Batch
die Ausgabe der CMD

Dazu möchte ich noch sagen, das eine in ProzentZeichen Angezeigte Variable mit enthaltenen SonderZeichen und enthaltenen Anführungszeichen die BefehlsZeile komplett Durcheinanderbringen kann.

[Edit]
leicht Überarbeitet - hoffe nicht zu lang geworden
[/Edit]


Gruß Phil

Content-Key: 172844

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

Ausgedruckt am: 17.09.2021 um 14:09 Uhr

Mitglied: dog
dog 08.09.2011 um 22:15:11 Uhr
Goto Top
Delimiter as the double quotes

Trennzeichen als die doppelten Anführungszeichen

;-) face-wink
Mitglied: pieh-ejdsch
pieh-ejdsch 08.09.2011 um 22:34:05 Uhr
Goto Top
Ok danke, habs umgedreht. Nicht das ich den Preis für die Unverständlichste Überschrift bekomme
Mitglied: 99045
99045 08.09.2011 um 23:43:34 Uhr
Goto Top
Wie heisen die Dinger noch gleich? - doppelte Hochkommata; Gänsefüsschen oder doppelte Anführungszeichen.
Es gibt sicher noch ein paar Varianten dieses Zeichen " zu benennen.

http://de.wikipedia.org/wiki/Satzzeichen
http://www.duden.de/rechtschreibregeln/anfuehrungszeichen
Mitglied: pieh-ejdsch
pieh-ejdsch 09.09.2011 um 00:23:12 Uhr
Goto Top
Ja ich weis - in dem Sinne ist es kein Satzzeichen, sondern Korrekterweise ist es nur ein "Zollzeichen".
Zitat aus Wiki
Im Schreibmaschinensatz gibt es für öffnendes und schließendes Anführungszeichen nur ein Zeichen ("), das zugleich als Ersatzzeichen für Zoll, Sekunden oder Bogensekunden dient.

Da aber in der Hilfe für For Ausszug
und generell in der CMD Hilfe es sich immer in Verbindung mit den ZollZeichen um die sogenannten AnführungsZeichen handelt, denke ich mal es genügt die Dinger Anführungszeichen zu nennen.

[Edit]
Aber für die Nutzbarkeit als delimiter ist es nicht hinreichend.
Aber es ist Nutzbar wie ein Beliebiger anderer Delimiter. Sonst wäre eine Nutzung jedes Anderen Delimters genauso Fraglich.
Ob eine Serparation mit einer Forschleife Sinn macht kommt auf die Ausgangssituation an.

Weil.... du bekommst auch keine anderen, wenn du im Laden nach einfachen handelsüblichen Anführungszeichen fragst.
darum hatte ich dies mit dem Vorsatz: doppelt nur eindeutiger Formulieren wollen - genau wie es auch dort steht - im Win 7 Help for
[/Edit]

Gruß Phil
Mitglied: Biber
Biber 09.09.2011 um 00:27:09 Uhr
Goto Top
Moin pieh-ejdsch,

wäre es, wenn die Anführungszeichen als Delimiter zwischen mehreren Token dienen sollen,
nicht angebrachter, die FOR-Anweisung so zu formulieren?

Die Textdatei "textmitAnfü.txt" sieht so aus:

Oder - anders ausgedrückt - mit der Caret/dem Zirkumflex ^ ein Anführungszeichen innerhalb der FOR-Anweisung zu maskieren mag ja eine notwendige Bedingung sein.
Aber für die Nutzbarkeit als delimiter ist es nicht hinreichend.

Grüße
Biber
[Edit & OT]
in dem Sinne ist es kein Satzzeichen, sondern Korrekterweise ist es nur ein "Zollzeichen".
...in diesem Forum bestimmt auch bald als "hochgestellte römische Zwei" bezeichnet, weil es sonst zu einfach wird.
Ich denke, Kaputtnick hatte sich nur an den doppelten Anführungszeichen gestört.
Weil.... du bekommst auch keine anderen, wenn du im Laden nach einfachen handelsüblichen Anführungszeichen fragst.
[/Edit & OT]
Mitglied: Friemler
Friemler 10.09.2011 um 13:34:52 Uhr
Goto Top
Moin pieh-ejdsch,

schön, dass Du das herausgefunden und veröffentlicht hast. Dieser Tipp wird in meinem FOR-Tutorial verlinkt :-) face-smile .

Zur Bezeichnung des "-Zeichens: Ich denke, man sollte sich da einfach an den allgemeinen Sprachgebrauch halten. Die Ausdrücke "doppeltes Anführungszeichen" (für das "-Zeichen), "einfaches Anführungszeichen" (für das '-Zeichen, was eigentlich Apostroph heißt) und "umgekehrtes Anführungszeichen" (für das `-Zeichen, was eigentlich Gravis oder frz. accent grave heißt) stammt ja schließlich von den Übersetzern der Hilfetexte der Redmonder Praktikanten, die wahrscheinlich ebenfalls Praktikanten waren ;-) face-wink ... Diese sprachlichen Ver(w)irrungen noch fortzusetzen und den Begriff "Zollzeichen" ins Spiel zu bringen, halte ich für keine gute Idee. Und laut dem Wikipedia-Artikel ist das "-Zeichen ein Satzzeichen.

Gruß
Friemler
Mitglied: Skyemugen
Skyemugen 12.09.2011 um 08:49:25 Uhr
Goto Top
Aloha Friemler,
[OT]
und nur weil's bei FWikipedia steht ...

Ich persönlich bleibe bei Zollzeichen, weil ich „Anführungszeichen” weder aus dem ASCII heraus noch sonstwie schreibmaschinentechnisch im heutigen Zeitalter akzeptiere ;-) face-wink [auch wenn viele Forensoftware sowohl für “ (ALT+0147) als auch für ” (ALT+0148) oftmals nur " darstellen oder die Darstellung sogar vertauschen *gg*]
[/OT]

@phil,

hättest du den Beitrag nicht vor zwei Wochen bringen können ... ich hab mir den ... ausgebissen, Zollzeichen als Delimiter zu nutzen, auf die Idee, die Optionen zu maskieren wäre ich dort nicht gekommen.

greetz André

edit: Weshalb funktioniert das eigentlich nicht mit in ('echo Eins"Zwei"Drei"etc') ?

P.S.:@phil, wenn dann bitte Skye ;-) face-wink
Mitglied: pieh-ejdsch
pieh-ejdsch 12.09.2011 um 18:48:37 Uhr
Goto Top
moin Skye,

vor zwei Wochen also - hättest ja einen Beitrag öffnen Können ;-) face-wink

das mit dem Nichtfunktionieren - gegenfrage wieviel AnführungsZeichen sind denn im Satz der For?
um ein kleines Licht dort hineinzubringen habe ich mal was Vorbereitet
in dem Teil der Variable wo in der Forschleife auch Fehler kommen hängt genau mit dem Bereich der Variable zusammen wo eine Maskierung greift und wo nicht.
eine Andere Variante für Tee ist auch eingebaut Batch - mit und ohne tee - Konsoleausgaben zugleich in eine Datei leiten und auf dem Bildschirm ausgeben

Da kann man sich anstrengen wie man will der Unmaskierbare Bereich bleibt unmaskierbar! Siehe: ->fast ganz oben
Lösung Txt verwenden oder Verzögerte Auflösung.

Gruß Phil
Mitglied: jeb-the-batcher
jeb-the-batcher 10.10.2011 um 09:11:11 Uhr
Goto Top
@pieh-ejdsch

Ich bin begeistert, nachdem eigentlich niemand mehr geglaubt hat, dass es möglich ist quotes als delim zu verwenden, ist es doch noch gelungen.
Und dann auf eine so relativ einfache Weise, nur dass es vorher nie jemand ausprobiert hat.
Ich hab auch so ziemlich alles probiert, aber auf die Idee die umschliessenden quotes wegzulassen bin ich einfach nicht gekomment.

Jan Erik
Heiß diskutierte Beiträge
question
Drucker Gäste WLANmarkaurelVor 1 TagFrageLAN, WAN, Wireless27 Kommentare

Hallo zusammen und bitte um eure Hilfe! Ich hab in einer kleinen Schule ein LAN aufgebaut. Mit der Zeit kam natürlich auch der Bedarf an ...

question
Virtualisierungsprojekt für die FacharbeitVentimonusVor 1 TagFrageVirtualisierung16 Kommentare

Heyho, Ich habe mal ein paar fragen, bezüglich meines Abschlussprojektes, ob das alles überhaupt so Sinnig ist wie ich es mir denke. Kurz zur Erläuterung: ...

general
HomeServer noch mal anfassen?dertowaVor 1 TagAllgemeinServer-Hardware20 Kommentare

Hallo zusammen, erst im Juli dieses Jahres habe ich mein Homeserver-System angefasst und ein paar Upgrades vorgenommen. Der Threadripper 1920x wurde durch einen Ryzen 5 ...

question
Netzwerkperformance - Mikrotik - Wo ist mein Fehler?BirdyBVor 19 StundenFrageNetzwerke34 Kommentare

Moin zusammen, ich stehe gerade etwas auf dem Schlauch und weiß nicht so recht was mein Fehler ist. Gegeben ist mein heimisches Netzwerk: Also eigentlich ...

info
Hunderttausende MikroTik-Router sind seit 2018 angreifbarkilltecVor 1 TagInformationMikroTik RouterOS22 Kommentare

Mehrere MikroTik Router angreifbar. Hier der Link zu Heise: Hunderttausende MikroTik-Router sind seit 2018 angreifbar Gruß ...

question
Neue Firmennetzwerkstruktur und ein glühender KopfDerWachnerVor 1 TagFrageNetzwerke28 Kommentare

Moin zusammen, nun hab ich jahrelang hier nur mitgelesen, nun stehe ich allerdings selbst vor nem Problem was mir seit Tagen Kopfschmerzen bereitet. Also wir ...

question
An Konsole geht der Root Account über SSH Permission denieditnirvanaVor 1 TagFrageUbuntu21 Kommentare

Hallo, wenn ich bei Ubuntu 16.04 über SSH einlogge, kommt Permission denied. Bin ich aber direct an der Konsole im VMWARE geht der Root User. ...

general
Neue Herausforderungen auf unserer englischen SeiteFrankVor 18 StundenAllgemeinOff Topic12 Kommentare

Auf unserer englischen Seite gibt es neue Herausforderungen: Find who restarted DB server und Wanted: Network Node Manager 6.4 wer kann helfen? Generell findet ihr ...