Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch Problem: Teilstring aus for-schleife

Empfohlene Antworten

Veröffentlicht

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 :)

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 von HeinzM

  • 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

  • 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 :/

  • 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 :D

  • 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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.