WinFuture-Forum.de: Textdatei Zeile für Zeile auslesen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Textdatei Zeile für Zeile auslesen Batch


#1 Mitglied ist offline   UED 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 19. November 15
  • Reputation: 0

geschrieben 19. November 2015 - 12:55

Hallo,

ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach und nach als Variable der Batchdatei zur Verfügung stellen.
Zuvor möchte ich mit der Batch-Datei per "dir" eine Dateiübersicht eines Ordners anfertigen und diese dann in jene Textdatei schreiben.

Anschliessend soll diese Datei Zeile für Zeile ausgelesen werden und jedes mal in eine Variable gespeichert werden. Somit enthält die eine Variable dann den jeweiligen Datennamen.
Zu guter Letzt will dann bei allen Dateien abgefragt werden, weil ich die dann neu benennen möchte.

Den dir-Befehl und die Dateiumbennung bekomme ich schon alleine hin. ;)
Mit "for /f %%i in (text.txt) do echo %%i" wird die ganze Datei mit allen Zeilen auf einmal ausgegeben.
Meine Frage deswegen: Wie kann ich es so machen, dass jede Zeile nacheinander ausgeben wird, wobei ich jedes mal mit Eingabe bestätige?

Dieser Beitrag wurde von UED bearbeitet: 19. November 2015 - 12:59

0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 19. November 2015 - 13:32

For() gibt schon zeilenweise aus. :)

Wenn Du da eingreifen möchtest, muß der Teil hinter dem FOR in eine Klammer gesteckt werden. Also in etwa so:

for /f %%i in (text.txt) do (
echo %%i
pause
)



Wichtig: die öffnende Klammmer muß mit in die FOR-Zeile. Drunter geht NICHT.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   UED 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 19. November 15
  • Reputation: 0

geschrieben 19. November 2015 - 15:01

Sehr gut, vielen Dank. :)
Ich hätte nicht gedacht, dass es tatsächlich so einfach ist.
0

#4 Mitglied ist offline   UED 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 19. November 15
  • Reputation: 0

geschrieben 20. November 2015 - 10:23

Leider klappt der eigentliche Teil mit den Umbennen nicht. :(
Mein Skript ist soweit folgendes:
echo off
cls
dir *.txt /b>res.txt
pause
for /f %%i in (res.txt) do (
echo Aktuelle Datei: %%i
set /p renva= Neuer Name:
ren %%i %renva%.txt
)


Er erstellt eine schöne Übersicht aller Textdateien , wie ich es wollte. Nur kann ich die im Anschluss nicht nacheinander umbennen. Aus beispielsweise 1.txt macht er etwas ohne Dateinamen, bei den darauffolgenden Dateien sagt er, dass er die Datei nicht finden konnte.
Zum Test waren es Dateien von 1.txt bis 7.txt.

Ich habe mal testweise in der Schleife noch echo %renva% eingebaut, um zu schauen, ob das überhaupt klappt. Tatsächlich ist die Variable renva dann leer. :(

Dieser Beitrag wurde von UED bearbeitet: 20. November 2015 - 10:49

0

#5 Mitglied ist offline   hoschen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 748
  • Beigetreten: 12. Februar 04
  • Reputation: 2

geschrieben 20. November 2015 - 13:38

Beitrag anzeigenZitat (UED: 20. November 2015 - 10:23)

echo off
cls
dir *.txt /b>res.txt
pause
for /f %%i in (res.txt) do (
echo Aktuelle Datei: %%i
set /p renva= Neuer Name:
ren %%i %renva%.txt
)



Mach die Zeile "ren %%i %renva%.txt in ren %%i !renva!.txt
0

#6 Mitglied ist offline   UED 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 19. November 15
  • Reputation: 0

geschrieben 20. November 2015 - 15:30

 Zitat (hoschen: 20. November 2015 - 13:38)

Mach die Zeile "ren %%i %renva%.txt in ren %%i !renva!.txt


Das geht leider auch nicht. :( Dann erhalte ich eine Datei namens !renva!.txt

Im Anhant habe ich meinen Testordner, es wäre echt klasse, wenn es funktionieren würde.

Angehängte Datei(en)

  • Angehängte Datei  Test.zip (671bytes)
    Anzahl der Downloads: 162

Dieser Beitrag wurde von UED bearbeitet: 20. November 2015 - 15:31

0

#7 Mitglied ist offline   hoschen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 748
  • Beigetreten: 12. Februar 04
  • Reputation: 2

geschrieben 20. November 2015 - 15:47

Bei mir funktioniert das!?

Welches Windows hast Du?

Dieser Beitrag wurde von hoschen bearbeitet: 20. November 2015 - 15:47

0

#8 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 20. November 2015 - 16:19

Du mußt in der Batchdatei irgendwo weit oben
SETLOCAL ENABLEDELAYEDEXPANSION 
reinfüttern, damit das geht.

%var% ist statisch, das wird bei Batch nicht neu zugewiesen. Für sowas wird DELAYEDEXPANSION und die !var!-Syntax erforderlich.

Näheres unter
help setlocal
und in der Referenz unter Delayed Expansion.

Dieser Beitrag wurde von RalphS bearbeitet: 20. November 2015 - 16:20

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0