pieh-ejdsch
Goto Top

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

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

Printed on: November 30, 2022 at 18:11 o'clock

Member: dog
dog Sep 08, 2011 at 20:15:11 (UTC)
Goto Top
Delimiter as the double quotes

Trennzeichen als die doppelten Anführungszeichen

face-wink
Member: pieh-ejdsch
pieh-ejdsch Sep 08, 2011 at 20:34:05 (UTC)
Goto Top
Ok danke, habs umgedreht. Nicht das ich den Preis für die Unverständlichste Überschrift bekomme
Mitglied: 99045
99045 Sep 08, 2011 at 21:43:34 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Sep 08, 2011 at 22:23:12 (UTC)
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
Member: Biber
Biber Sep 08, 2011 at 22:27:09 (UTC)
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]
Member: Friemler
Friemler Sep 10, 2011 at 11:34:52 (UTC)
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
Member: Skyemugen
Skyemugen Sep 12, 2011 at 06:49:25 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Sep 12, 2011 at 16:48:37 (UTC)
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
Member: jeb-the-batcher
jeb-the-batcher Oct 10, 2011 at 07:11:11 (UTC)
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