138701
Goto Top

Tokens alternative

Hallo Zusammen,

Hier mein Fehler:
for /f "eol=| delims=" %%g in (test.txt) do echo %%g  

test.txt kann so aussehen:
"Andreas | Phillip | Anna"

oder so:
"Janina | Amelia | Noah | Joel | Nina"

Ich weiß also nicht, wie viele tokens es gibt.
Wie verarbeite ich jeden Namen einzeln, so dass der Output so aussieht:

Janina
Amelia
Noah
Joel
Nina

?

Content-ID: 499475

Url: https://administrator.de/forum/tokens-alternative-499475.html

Ausgedruckt am: 21.04.2025 um 13:04 Uhr

140913
Lösung 140913 28.09.2019 aktualisiert um 16:17:23 Uhr
Goto Top
Statt den "|" wäre es einfacher z.B. gleich ";" als Trenner zu nutzen, das kann ne simple FOR-Schleife (ohne /f) neben anderen Trennern wie Leerzeichen, Komma,Gleichheitszeichen,Tab (siehe https://ss64.com/nt/syntax-esc.html#delimiters) direkt verarbeiten.
Geht aber auch so wie es jetzt bei dir ist indem du die Zeichen ersetzt und dann drüber mit einfachen FOR-Loop durchläufst:
@echo off
set /p namen=<"D:\test.txt"  
set "namen=%namen: | =;%"  
for %%a in (%namen%) do echo %%a

Würde ich heutzutage aber gleich mit PS machen
(gc D:\test.txt) -split "\s*\|\s*"  
oder die Bash
sed -e 's/ | /\r\n/g' datei.txt  
Fertsch.
rubberman
Lösung rubberman 28.09.2019 um 16:55:25 Uhr
Goto Top
Oder Zeile lesen und dann die Textersetzung austricksen.
@echo off
set "namen=Janina | Amelia | Noah | Joel | Nina"  

echo %namen: | =&echo %

echo *** oder ***

set "name=%namen: | ="&call :out&set "name=%"  

pause
exit /b

:out
echo %name%
exit /b
Vorher Gedanken machen wie die geschriebenen Werte auch wieder verarbeitet werden können, ist aber sinnvoller...

Steffen
138701
138701 29.09.2019 um 12:46:13 Uhr
Goto Top
Danke!