WinFuture-Forum.de: Textdatei mit Batchdatei auslesen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Textdatei mit Batchdatei auslesen unter Windows XP


#1 Mitglied ist offline   FunkyMonkey 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. August 15
  • Reputation: 0

geschrieben 20. August 2015 - 13:12

Grüßt euch,

ich möchte unter Windows XP eine Textdatei mit einer Batchdatei nach bestimmten Einträgen durchsuchen und eine Ausgabe generieren. In der Textdatei findet man Einträge, die folgendermaßen geartet sind:

Attribut1=Wert1, Attribut2=Wert2, Attribut3=Wert3, ...

Ich möchte, dass meine Batchdatei in der Textdatei nach beispielsweise "Attribut2" sucht und dann Wert2 ausgibt. Das Attribut, nach dem ich in der Textdatei suchen möchte, ist immer dasselbe. Es ist also immer Attribut2, wonach ich suche, der Name ist also bekannt. Attribut2 kommt bloß mehrmals in der Textdatei vor und die Batchdatei, soll das ständige Herausschreiben von Wert2 ersparen. Wert2 selbst enthält sowohl Zahlen als auch Buchstaben und stets einen Bindestrich, für den Fall, dass das wichtig sein sollte. Wert2 hat immer die gleiche Anzahl an Character und ebenso folgt auf Wert2 immer ein Komma.

Die Ausgabe soll in einer separaten Textdatei erfolgen. In dieser Ausgabedatei soll also lediglich dann Wert2 drin stehen (zunächst).

Kann mir jemand erklären wie das geht? Und bitte beachtet, ich bin ganz neu in der Batch-Programmierung. Ich habe erstes Wissen basierend auf Tutorial-Websites. Scheut euch also nicht mir auch die banalen Dinge zu erklären :)

Dank euch

Dieser Beitrag wurde von FunkyMonkey bearbeitet: 20. August 2015 - 14:20

0

Anzeige



#2 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 20. August 2015 - 13:39

Um Batch-Programmierung zu lernen oder geht auch XML?

Oberflächlich gedacht fehlt mir ein, dass Du also eine Eingabeaufforderung in einer Schleife brauchst, in der man endlos nach einer Variable gefragt wird, dessen Wert dann ausgegeben wird? Also suchst Du eine Batchfunktion mit der man nach bestimmten Wörtern Suchen kann, dann hast Du die Position und musst nur den dahinter stehen Wert anzeigen lassen.

Soweit die Logik aber für XML gibt es eben bessere Unterstützung, nur muss die Datei dann eben in solch einem Format vorliegen.

Dieser Beitrag wurde von Miss ArmyStar U.S.Berlin bearbeitet: 20. August 2015 - 13:40

0

#3 Mitglied ist offline   FunkyMonkey 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. August 15
  • Reputation: 0

geschrieben 20. August 2015 - 14:16

Nein nicht zwangsläufig um Batch zu lernen. Mir geht es nur um die Textdatei und dass diese ohne zusätzliche Programme erstellt werden kann. Mit XML kenne ich mich nicht aus, aber wenn das damit auch geht, dann gerne auch mit XML. Wie gesagt, hauptsache ich kann durch Starten einer Datei (ob Batch oder XML) diese Textdatei erzeugen.

Aber ich brauche keine Eingabeaufforderung. Das werde ich oben im Header auch gleich nochmal ergänzen, damit das nicht mehr zu Missverständnissen führt. Das Attribut nachdem ich in der Textdatei suche heißt immer gleich. Also es heißt immer Attribut2. Der Eintrag für Attribut2 kommt mehrmals in einer Datei vor und das Wiederholt sich in vielen anderen Dateien dann. Die Datei, die ich schreiben möchte, soll einem das ständige Herausschreiben von Wert2 ersparen.
0

#4 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 22. August 2015 - 12:20

Um was für Textdateien handelt es sich denn? Erstellst Du die selber oder sind die schon erstellt?
Wenn Du sie selber erstellst und es soll kein fließender Text drin stehen, dann würde ich einfach XML nutzen.

Normalerweise kann man mit einem Editor nach Wörtern in einer Datei suchen und so wie Du die Datei beschreibst, dürfte dann nach einem Treffer ein Ist-Zeichen kommen und dann der Wert, denn Du sehen möchtest. Und kannst dann weiter Suchen lassen, um noch einen Treffer zu bekommen oder das Ergebnis zu bekommen, dass mehr nicht gefunden wurde.

Es ist doch schon so, dass Du Batchprogrammierung lernen möchtest oder? Ansonsten schreib Dir einfach ein kleines Programm in Visual Express C++ oder so, dass arbeitet dann viel schneller, bei XML sowieso und mit XML ist deine Absicht leichter programmierbar aber wenn es sich nur um ein bis 10 Textdateien handelt, wo jeweils vielleicht 512 Zeichen drin stehen, dann geht es auch mit Java oder so. Für Java gibt es eine schöne IDE z.B. nämlich NetBeans.

Bei XML ist es so, dass anzugeben ist, welche XML-Datei geöffnet werden soll. Da kannst Du entweder einen Pfad+Dateiname fest einprogrammieren (konstant/statisch(static)) oder eine Möglichkeit einprogrammieren, dass man die Datei oder die Dateien bei Ausführung des Programm angibt.

Dann nutzt Du eine der tollen Funktionen einer angebotenen XML-Library mit der Du Eigenschaftswerte auslesen kannst. Also was sehr übliches bei XML. In dem Funktionsaufruf gibst Du dann das Attribut an (Übergabeparameter). Wurde mehr als eine Datei geöffnet, muss der Funktionsaufruf natürlich für jede Datei einzeln aufgerufen werden. Also musst Du eine Schleife einbauen, die die Dateiliste abarbeitet. In der Schleife wäre dann natürlich auch zu programmieren, wie die ausgelesenen Werte Dir serviert werden sollen...
0

#5 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 22. August 2015 - 15:59

Mit diesem Script geht das problemlos:

for /f "tokens=4 delims==," %%i in ('type Textdatei.txt') do echo %%i >> Ausgabe.txt


Textdatei.txt muss dabei natürlich angepasst werden. Je nachdem wie deine Datei heißt und wo sie liegt, etc.

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 22. August 2015 - 15:59

0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.289
  • Beigetreten: 08. April 06
  • Reputation: 885
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 22. August 2015 - 17:10

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 22. August 2015 - 15:59)

Textdatei.txt muss dabei natürlich angepasst werden. Je nachdem wie deine Datei heißt und wo sie liegt, etc.


würde aber annehmen, dass dies nur mit reinen ASCII-Dokumenten funktionieren wird... bei DOC/DOCX und Konsorten dürfte das vermutlich problematisch werden :unsure:
0

#7 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 22. August 2015 - 18:04

Ja sicher. Batch kann nur einfache Textdateien auslesen.
Von was anderen war hier auch nie die Rede, soweit ich das richtig gelesen habe.
0

#8 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 22. August 2015 - 19:15

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 22. August 2015 - 18:04)

Ja sicher. Batch kann nur einfache Textdateien auslesen.
Von was anderen war hier auch nie die Rede, soweit ich das richtig gelesen habe.

Allerdings wird Fragender dein Skript so auch gar nicht verstehen. Selbst wenn er den Dateiname anpasst, wird ihm der Code nicht das liefern, was er will.
0

#9 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 22. August 2015 - 19:27

Der Code muss nur in eine Batchdatei, fertig.
Was soll nicht funktionieren? Ich habe es getestet und es geht wie gewollt.
0

#10 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 22. August 2015 - 19:29

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 22. August 2015 - 19:27)

Der Code muss nur in eine Batchdatei, fertig.
Was soll nicht funktionieren? Ich habe es getestet und es geht wie gewollt.

Er sucht doch immer nur nach einem bestimmten Attribut. Also woher weiß er, wo er den Attribut-Name (Variable) setzen muss?
0

#11 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 22. August 2015 - 19:31

Lies dir einmal seinen ersten Post durch und teste das Script.
Du wirst sehen das es genau das macht was der TE will.

Das Script muss nur auf die eigene Textdatei angepasst werden, so wie ich es schrieb. Keine anderen Änderungen sind notwendig.
0

#12 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 22. August 2015 - 19:38

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 22. August 2015 - 19:31)

Lies dir einmal seinen ersten Post durch und teste das Script.
Du wirst sehen das es genau das macht was der TE will.

Das Script muss nur auf die eigene Textdatei angepasst werden, so wie ich es schrieb. Keine anderen Änderungen sind notwendig.

Wie?! Also entweder habe ich das falsch verstanden oder Du. Er meinte doch, dass es um Text-Dateien geht mit lauter Attributen, den Werten zugewiesen ist und, dass er aber immer nur von einem bestimmten Attribut den Wert angezeigt haben möchte. Wobei er meiner Meinung nach auch noch gar nicht gesagt hat, wie dieser konkrete Attribut heißen soll oder ob es um mehrere geht, die er eventuell selbst noch nicht alle kennt.

Oder dachtest Du, dass er alle Attribute aus einer Misch-Text-Datei angezeigt haben will? Das habe ich auf jeden Fall so nicht verstanden!

Dieser Beitrag wurde von Miss ArmyStar U.S.Berlin bearbeitet: 22. August 2015 - 19:41

0

#13 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 22. August 2015 - 20:12

Beitrag anzeigenZitat (FunkyMonkey: 20. August 2015 - 13:12)

Das Attribut, nach dem ich in der Textdatei suchen möchte, ist immer dasselbe. Es ist also immer Attribut2, wonach ich suche, der Name ist also bekannt.

Und genau diesen Wert gibt das Script aus.
0

#14 Mitglied ist offline   Miss ArmyStar U.S.Berlin 

  • Gruppe: aktive Mitglieder
  • Beiträge: 15
  • Beigetreten: 20. August 15
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 22. August 2015 - 20:32

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 22. August 2015 - 20:12)

Und genau diesen Wert gibt das Script aus.

Wenn in der Text-Datei noch andere Attribute vorkommen und wirklich immer nur der Wert von Attribut2 gesucht ist, stimmt das so nicht. Irgendwie denke ich auch, dass "Attribut" nur ein Platzhalter sein soll und Wirklichkeit Attribut-Namen wie "counter" oder "index" vorkommen aber gut, muss ja nicht sein.

Außerdem:

Zitat

Ich möchte, dass meine Batchdatei in der Textdatei nach beispielsweise "Attribut2" sucht und dann Wert2 ausgibt.
Unterstreichung stammt von mir!

Dieser Beitrag wurde von Miss ArmyStar U.S.Berlin bearbeitet: 22. August 2015 - 20:35

0

#15 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 23. August 2015 - 10:26

Würde für kommagetrennte Werte Batch komplett außen vor lassen und stattdessen Powershell verwenden.

Denn das kennt Import-Csv und Export-Csv. Damit lassen sich solche kommagetrennten Werte direkt einlesen und es ist dann fast schon banal, auf den Inhalt zuzugreifen.
"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