XspYroX Geschrieben 8. Januar 2013 Teilen Geschrieben 8. Januar 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 8. Januar 2013 Teilen Geschrieben 8. Januar 2013 schon mal probiert: ( set str=%%i set str=%str:~-5% echo.str ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
XspYroX Geschrieben 8. Januar 2013 Autor Teilen Geschrieben 8. Januar 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HeinzM Geschrieben 8. Januar 2013 Teilen Geschrieben 8. Januar 2013 (bearbeitet) 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 2013 von HeinzM Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 8. Januar 2013 Teilen Geschrieben 8. Januar 2013 @echo off setlocal EnableDelayedExpansion for /f "tokens=* delims=" %%i in ('findstr /n $ temp.txt') do @ ( set foo=%%i echo !foo:~-5! ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
XspYroX Geschrieben 9. Januar 2013 Autor Teilen Geschrieben 9. Januar 2013 @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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 9. Januar 2013 Teilen Geschrieben 9. Januar 2013 alle zeilen mit inhalt müssen mit einem Enter beendet sein. Die letzte Zeile sollte also eine Leerzeile sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
XspYroX Geschrieben 9. Januar 2013 Autor Teilen Geschrieben 9. Januar 2013 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 :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 9. Januar 2013 Teilen Geschrieben 9. Januar 2013 Dann hau mittels Batch vor dem Schleifendurchlauf ein Enter-Zeichen in die Datei. echo.>> foo.txt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
XspYroX Geschrieben 9. Januar 2013 Autor Teilen Geschrieben 9. Januar 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 9. Januar 2013 Teilen Geschrieben 9. Januar 2013 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
XspYroX Geschrieben 9. Januar 2013 Autor Teilen Geschrieben 9. Januar 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.