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-Key: 499475

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

Printed on: April 25, 2024 at 12:04 o'clock

Mitglied: 140913
Solution 140913 Sep 28, 2019 updated at 14:17:23 (UTC)
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.
Member: rubberman
Solution rubberman Sep 28, 2019 at 14:55:25 (UTC)
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
Mitglied: 138701
138701 Sep 29, 2019 at 10:46:13 (UTC)
Goto Top
Danke!