Veröffentlicht 8. Januar 201312 j Hi Ich hab da ein Problem, das ich ums verrecken nicht gelöst bekomme. In einer txt-datei stehen viele zeilen text. Ich möchte die erste zeile überspringen und ab der 2. zeile brauche ich eine variable, die immer die letzten 5 Zeichen beinhaltet. Bisher habe ich folgenden Code: @echo off for /f "tokens=* delims=" %%i in ('findstr /n $ D:\temp.txt') do @( echo %%i pause ) Den Teilstring würde ich normalerweise mit folgendem Code bekommen: echo %var:~-5% Nur klappt das mit der %%i-Variable nicht. Frage also: Wie bekomme ich am elegantesten einen Teilstring aus %%i? Würde mich über Antworten sehr freuen, habe schon das ganze Internet durchsucht und nichts passendes gefunden ^^" Viele Grüße XspYroX
8. Januar 201312 j Autor Jepp. Er gibt nur "str" ohne die Anführungszeichen aus. Dafür muss es doch nen einfachen weg geben. Kann doch net sein, dass man an sowas scheitert o_O
8. Januar 201312 j Ich besitze leider kein Windows (im Moment) und deswegen glaub ich, die Batch-Dateien wie du es machst kann ich nicht zum laufen bringen. Ich hab das ganze Mal als bash-Programm ausprobiert. Und ich glaube das tut was du willst. Vielleicht hilft dir ja der Ansatz ausgabe.sh #!/bin/bash while read line; do echo ${line:(-5)} ;done < $1 ./ausgabe.sh text.txt Wenn man das dann so aufruft, bringt dir das Miniprogramm die letzten 5 Zeichen jeder Zeile der Datei auf den Bildschirm. Ich hab auch erst vor paar Wochen mit dem Programmieren angefangen, also ich hoffe ich konnte dir vielleicht einen Anstoß in die richtige Richtung geben. Viele Grüße aus Leipzig Matze Bearbeitet 8. Januar 201312 j von HeinzM
8. Januar 201312 j @echo off setlocal EnableDelayedExpansion for /f "tokens=* delims=" %%i in ('findstr /n $ temp.txt') do @ ( set foo=%%i echo !foo:~-5! )
9. Januar 201312 j Autor @echo off setlocal EnableDelayedExpansion for /f "tokens=* delims=" %%i in ('findstr /n $ temp.txt') do @ ( set foo=%%i echo !foo:~-5! ) Super, der code klappt fast. Einziges Problem: Die letzte Zeile aus der text-datei wird nicht eingelesen. Wenn ich 4 zeilen in der txt habe, werden exakt 3 ausgaben gemacht bzw. nach der 3. ausgabe kommt nur eine leerzeile und das war es dann. Kann man das auch noch fixen? LG XspYroX
9. Januar 201312 j alle zeilen mit inhalt müssen mit einem Enter beendet sein. Die letzte Zeile sollte also eine Leerzeile sein.
9. Januar 201312 j Autor alle zeilen mit inhalt müssen mit einem Enter beendet sein. Die letzte Zeile sollte also eine Leerzeile sein. Hmmm... die txt, die ich auslesen möchte, wird automatisch genertiert. Daher habe ich darauf keinen einfluss. Leider wird die letzte zeile eben nicht mit einem enter "bestätigt".... Kann man das trotzdem irgendwie hinkriegen? Wenn das nicht geht, muss ich wohl auf Visual C umsteigen. Da sollte sowas ja machbar sein. Häte nur lieber ne batch gehabt, da kann man einfacher kleinigkeiten dran ändern :/
9. Januar 201312 j Dann hau mittels Batch vor dem Schleifendurchlauf ein Enter-Zeichen in die Datei. echo.>> foo.txt
9. Januar 201312 j Autor Dann hau mittels Batch vor dem Schleifendurchlauf ein Enter-Zeichen in die Datei. echo.>> foo.txt Au mann, da hat es bei mir wohl ausgesetzt. Dass ich da net selbst drauf komme xD Hat funktioniert. Jetzt noch die Frage... Kann ich mit EINFACHEN mitteln die letzte Zeile in der txt wieder löschen lassen? Also... Sodass ich zu beginn ein enter-zeichen in die txt haue, diese dann auslese, und danach das enter-zeichen wieder entferne? Wenn nicht, ist es auch nicht tragisch. Gut wäre es trotzdem, wenn das möglich wäre Aber schonmal dickes Danke an euch alle
9. Januar 201312 j Wenn du das Original behalten musst/willst. Lege am Anfang der Batch eine Kopie an, bearbeite die Kopie (Enter einfügen etc.) und lösche die Kopie am Ende der Batch wieder.
9. Januar 201312 j Autor Ich hab mich wohl zusehr in die Thematik vertieft. Ist ja schon unangenehm, wie ich grad sowas simples übersehe x.x aber ja, so lässt sich das perfekt lösen. Danke euch allen
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.