WinFuture-Forum.de: Batch: Zeile auslesen und Variable wechseln. - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch: Zeile auslesen und Variable wechseln.


#1 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Java Spiele programmieren, eigene Decompiler und am Arbeiten: Ein mini Roboter selber bauen ^^.

geschrieben 05. September 2018 - 15:14

Hallo liebes Forum.

Da ich ja momentan eine eigene Programmiersprache in Batch schreibe, fehlt mir etwas, wonach ich schon seit mehreren Tagen im Internet suche!

Hier meine Reihenfolge (Problem kommt danach)

-Eine Person schreibt in die .txt Datei folgendes rein:

print("Hallo")
int Vab1=Wie geht es dir?:

Dies ist ein Code von der eigenen Programmiersprache.

Nun baue ich grade eine Run.bat die diese Datei auslesen soll. Dazu muss ich jede Zeile in der richtigen Reihenfolge auslesen. Dies könnte ich so machen:



set "Zeile=1"
:loop

for /f (Die Zeile also: Die standard Zeile + Zeile) %%V in ("blablabla……) do set "%%V=Code" && set /a "Zeile=Zeile+1"

goto loop




Aber ich muss die Befehle in einer bestimmten Reihenfolge ausführen. Also muss die Variable Irgendwo anders gespeichert werden und eine neue Variable muss benutzer werden. Am ende sollen die in der Reihenfolge laufen.


Also: Mir fehlt nach /f in den Klammern einfach eine bestimmte Option jede Zeile + 1 auszulesen. Im Internet finde ich die ganze Zeit die Trennungszeichen das dann aber nur so funktioniert:


Wort1 Wort2 Wort3


Wenn ich diese Datei auslese, und nur das zweite Wort haben möchte dann kommt Wort2.

Wenn ich aber es so machen möchte


Zeile1
Zeile2
Zeile3

Und dann diese Datei auslese, und nur das 3 Wort haben möchte, kommt dann nur "Zeile1".


Ich hoffe mein Problem konnte ich mit diesem Beitrag verwirklichen. Wenn nicht schreibt es u


MFG cool_brick24

PS: Ich könnte reintheoretisch eine Liste anlegen und jedesmal wenn der loop läuft die Variable ändern.
Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

Anzeige



#2 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 05. September 2018 - 16:03

Beitrag anzeigenZitat (cool_brick24: 05. September 2018 - 15:14)

int Vab1=Wie geht es dir?:

Mal ne Frage.

In Programmiersprachen steht int für Integer, also Zahlen. Wieso steht das vor einer Variable die einen String enthält? Müsste da nicht var davor? Oder wofür soll das int sein?
AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#3 Mitglied ist offline   cool_brick24 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 17. Februar 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Java Spiele programmieren, eigene Decompiler und am Arbeiten: Ein mini Roboter selber bauen ^^.

geschrieben 06. September 2018 - 15:06

Beitrag anzeigenZitat (Gispelmob: 05. September 2018 - 16:03)

Mal ne Frage.

In Programmiersprachen steht int für Integer, also Zahlen. Wieso steht das vor einer Variable die einen String enthält? Müsste da nicht var davor? Oder wofür soll das int sein?


Ich hab ja geschrieben, dass ich eine Programmiersprache programmiere. Ich hatte int einfach genommen, weil es mir als erstes einfiel. ^^
Meep! Meep!
set Coding=off
echo Start Coding in 3
ping Localhost -n 1 >NUL
cls
echo Start Coding in 2
ping Localhost -n 1 >NUL
cls
echo Start Coding in 1
cls && echo START CODING!
0

#4 Mitglied ist offline   erso 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 21. Februar 13
  • Reputation: 3

geschrieben 07. November 2018 - 08:32

Servus,

vieleicht hilft dir folgendes Beispiel:

@echo off
setlocal enabledelayedexpansion

set i=0

for /f "usebackq tokens=*" %%x in (bla.txt) do (
    set /a i+=1
    set line[!i!]=%%x
)

echo !i!
echo %line[2]%
echo %line[1]%

pause

0

#5 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 07. November 2018 - 20:22

Grr, schon wieder den Post gefressen. :angry:

Man verzeihe mir die kurze und ggf. "überklare" Antwort, aber, in zwei Worten:

- Vergiß es.

Sorry, aber mit Batch ist das ein aussichtsloses Unterfangen. Wie willst Du damit Zuweisungen, Typisierung, Vergleiche, Bedingungen oder Schleifen umsetzen? Oder was völlig banales: nach Beendigung der Schleife an die RICHTIGE Stelle im Originalquellcode zurückwechseln? Die ist schließlich variabel.

Da braucht man einen Parser und Verständnis der Materie.

Das gibt Batch einfach nicht her. Jemand, der Ahnung von der Materie hat, fragt nicht nach Batch, bin ich mir relativ sicher.

Daher:
(1) Bibliothek
(2) Ein oder fünf Bücher zum Thema Compilerbau greifen. Je einfacher desto besser, "Compilerbau for Dummies" oder sowas: Einfach deswegen, weil die Materie furztrocken ist und es soll ja nicht gleich jede Motivation getotkillt werden.


In jedem Fall Kudos. Es gibt viel zu wenige, die sich für sowas auch nur interessieren.
"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