Einer Variable mehrere Wörter zuordnen

Diskutiere Einer Variable mehrere Wörter zuordnen im Programmierung Forum im Bereich Software Forum; Wenn ich z. B. der Variable "var" mehrere Wörter zuordnen will (z. B. Wort1, Wort2 und Wort3) und anschließend eine EIngabe prüfe, ob sie eine der...
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Wenn ich z. B. der Variable "var" mehrere Wörter zuordnen will (z. B. Wort1, Wort2 und Wort3) und anschließend eine EIngabe prüfe, ob sie eine der drei Wörter enthält, müsste ich eine ewig lange If-Schleife bauen, was aber ziemlich aufwendig wird.

Das sollte daher so funktionieren können:

Code:
echo off
set var=[I][Hier sollen die verschiedenen Wörter fest gelegt werden][/I]
:anfang
set /P eingabe="Geben sie ein Wort ein: "
if /I %eingabe%==%var% (
    echo Das Wort %eingabe% ist richtig.
    pause
    exit
) else (
    echo Das Wort %eingabe% ist falsch.
    goto :anfang
)
So würde dann mein Test-Programm aussehen, aber wie kann ich die Wörter für die Variable %var% fest legen?
 
Mike

Mike

i7-6700HQ
Team
Mitglied seit
21.09.2006
Beiträge
24.377
Standort
in der Nähe eines Rechners
Die Lösung wäre ein Array :hm
Aber in DOS .... wozu ?!? ...... ich wüsste auch keine vernünftige Lösung :(
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.053
In der Hilfe ("help for") gibt es was mit "token". In der Richtung würde ich mal probieren.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Die Lösung wäre ein Array :hm
Aber in DOS .... wozu ?!? ...... ich wüsste auch keine vernünftige Lösung :(
Wie mach ich das mit dann mit array?
Kannst du mir ein Beispiel geben?


Und eigendlich weis ich selber keinen vernünftigen Grund.
Zumindest hab ich mal ein kleines Programm geschrieben, was Infos schützen soll und dabei eine Reihe Fragen stellt.
Und da ist es praktischer, einer Variable mehrere Wörter zuordnen zu können.
 
Mike

Mike

i7-6700HQ
Team
Mitglied seit
21.09.2006
Beiträge
24.377
Standort
in der Nähe eines Rechners
Wie mach ich das mit dann mit array?
Kannst du mir ein Beispiel geben?


Und eigendlich weis ich selber keinen vernünftigen Grund.
Zumindest hab ich mal ein kleines Programm geschrieben, was Infos schützen soll und dabei eine Reihe Fragen stellt.
Und da ist es praktischer, einer Variable mehrere Wörter zuordnen zu können.
Keine Ahnung für was du das brauchst. Aber generell etwas über DOS zu machen ist echt OUT.

Ich bin mittlerweile ein echt fauler Sack was Scripte betrifft, aber meist gibts alles schon irgendwo als Freeware das alles kann.

Wenn du also den Grund für den Script nennen würdest, könnte man eventuell was Fertiges finden :hm

Zur Frage: Ein Array ist nix anderes als eine Feldvariable die beliebig viele (vorher definiert) Daten aufnehmen kann.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Keine Ahnung für was du das brauchst. Aber generell etwas über DOS zu machen ist echt OUT.

Ich bin mittlerweile ein echt fauler Sack was Scripte betrifft, aber meist gibts alles schon irgendwo als Freeware das alles kann.

Wenn du also den Grund für den Script nennen würdest, könnte man eventuell was Fertiges finden :hm
Naja, mir machts aber spaß :D
Frag nicht warum, aber es ist so^^

Und deswegen will ich nix fertiges, ich will es selber schreiben und dafür brauch ich eine Möglichkeit, einer Variable mehrere Wörter zuordnen zu können.

Außerdem ist das bisher das einzige, was ich halbwegs kann und bevor ich das nicht voll behersche, mach ich nix anderes.
Danach werd ich warscheinlich mit java anfangen.

Zur Frage: Ein Array ist nix anderes als eine Feldvariable die beliebig viele (vorher definiert) Daten aufnehmen kann.
Meinst du mit Feldvariable ganz normale Variablen, wie man sie beispielsweise mit
Code:
set var=wort
fest legt, oder ist array etwas spezielles?

Ich hab mal die Variablen durchsuchen lassen, array wurde nicht gefunden und der Befehl array existiert auch nicht.
Und set array gibts auch nicht.

Wie meinst du das denn?
 
M

ModellbahnerTT

Mitglied seit
20.04.2005
Beiträge
3.778
Alter
39
Array ist etwas spezielles. Die Wörter könntest du auch in eine Datei umleiten und dann hintereinander wieder auslesen und so die Array Funktion erhalten. Von Java würde ich dir aber abraten und stattdessen C/C++ empfehlen.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Array ist etwas spezielles. Die Wörter könntest du auch in eine Datei umleiten und dann hintereinander wieder auslesen und so die Array Funktion erhalten.
Du meinst, dass ich die Wörter in eine extra Datei schreibe? Einfach so rein und dann mit call aufrufen?

Dann würde ich 20 Wörter eintragen und dann mit if suchen lassen, ob ein Wort da drin vorhanden oder nicht.

Hab ich das so richtig verstanden?
 
M

ModellbahnerTT

Mitglied seit
20.04.2005
Beiträge
3.778
Alter
39
Ja genauso meinte ich das. Wobei ich dazu C oder C++ nutzen würde welches es auch unter DOS vorhanden ist.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Ja genauso meinte ich das. Wobei ich dazu C oder C++ nutzen würde welches es auch unter DOS vorhanden ist.
Wie C++ ist auch unter Dos vorhanden?

Kann ich auch Befehle von C++ bei meinen Batch-Scripten einbauen?
 
M

ModellbahnerTT

Mitglied seit
20.04.2005
Beiträge
3.778
Alter
39
Ja es müsste auch einen C++ Compiler unter DOS geben. Nein C++ Befehle gehen nicht in Batch Scripten.
 
J

Jimmy1

Mitglied seit
27.07.2011
Beiträge
39
Hallo Palladin007,

Erst das Schlechte:

Außerdem ist das bisher das einzige, was ich halbwegs kann und bevor ich das nicht voll behersche, mach ich nix anderes.
Danach werd ich warscheinlich mit java anfangen.
DOS ist nicht mit Java, C, C++, ... vergleichbar. Das ist ein bisschen wie Äpfel und Elefanten vergleichen. DOS ist überwiegend "Spagetti-Code", sprich: es wird grundsätzlich alles nacheinander abgearbeitet -> es gibt zu wenig Kontroll-Strukturen. Ein "GoTo" ist schon fast das Höchste der Gefühle. Will man eine Schleife, muss man mit "GoTo" eine basteln.

Will sagen: Selbst wenn du Batch-Programmierung richtig gut kannst, wird du in der "richtigen" Programmierung eine neue Welt entdecken, die Schleifen, Fehlerbehandlungen, Objekte mit Funktionen und Eigenschaften, usw. hat.


Nun das Gute:

Ich denke, dass ich dir helfen kann.

Naja, mir machts aber spaß :D
Frag nicht warum, aber es ist so^^

Und deswegen will ich nix fertiges, ich will es selber schreiben und dafür brauch ich eine Möglichkeit, einer Variable mehrere Wörter zuordnen zu können.
Das kann ich sehr gut verstehen! Ich bin selbst so ein Freak, der programmiert, nur weils Spaß macht, und natürlich um was zu lernen.

Zu eigentlichen Thema erst mal ein paar Fragen:

1. Welches DOS willst du benutzen? Pures DOS bis 6.2 (das ist das DOS, mit dem man z. B. von Diskette bootet), oder das aufgesetzte DOS, das es in Windows XP gibt? Am besten schreibst du dann dein Betriebssystem genau auf.

2. Beschreibe bitte genau, was du tun bzw. erreichen willst. Beim Programmieren ist es ganz besonders wichtig, (weißt du ja bestimmt), weil es da auf jedes einzelne Zeichen ankommt.

3. (Gehört eigentlich zu Punkt 2 :blush ) Was meinst du genau mit "brauch ich eine Möglichkeit, einer Variable mehrere Wörter zuordnen zu können"?

Willst du mehrere Wörter nacheinander in die Variable schreiben und dann rausfinden, welches Wort in der Variablen ist, oder willst du mehrere Wörter gleichzeitig in der Variablen speichern, und dann herausfiltern, ob z. B. Wort1 und Wort3 drin sind, aber Wort2 NICHT?

Hab ich an alles gedacht? *Kopf-kratz* Falls ich was vergessen hab, schreib lieber mehr Infos, als zu wenig. Wie gesagt, ich mach das auch gern und kann das mit dem Spaß-Programmieren verstehen.

Ich kann dann gerne in meiner Code-Kiste nach was Passendem kramen, wenn du mir was schreibst, das ich verstehen kann.

Jimmy
 
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.153
Standort
DE-RLP-COC
Anstatt mit DOS und Batch rumzuhantieren würde ich mir Visual Basic anschauen.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
@Jimmy1:

Super, auf so jemanden hab ich gewartet^^

Mal zu deinen Fragen:

1.) Ich hab Windows 7 32 bit

2. und 3.)

Ich hab mir einfach überlegt, dass ich ja ein Programm schreiben könnte, was Informationen zuverlässig schützt. Wenn ich dann z.B. nach einer Reihe Wörter frage, die nur ich kenne, oder die nur ich mit der Frage in Bezug bringen würde, dann merke ich mir ja nicht die Reihenfolge (Bei Namen: Hans, Peter, Max, Lisa) und nur so wird die Frage akzeptiert.
Deswegen möchte ich die Wörter einer Variable zuordnen, dass der PC z.B. bei den Namen auch Hans, Peter, Lisa, Max bestätigt, oder Peter, Hans, Lisa, Max.
Und dafür brauche ich halt eine Variable, die mehrere Wörter gespeichert hat, da eigendlich nicht die Reihenfolge wichtig ist, sondern welche Wörter angegeben werden.

Und dann hätte ich mir einen Weg überlegt, wie ich ein eingegebenes Wort aus dem Paket der Variable entferne. Aber das kann man ja sicher irgendwie mit if basteln.
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.053
wie ich schon sagte, for ... token=...
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
wie ich schon sagte, for ... token=...
Das ist für mich dann sozusagen komplett neu, weil ich den for-Befehl bisher noch kaum benutzt habe. Eigendlich gar nicht...

Muss ich mich dann ganz rein denken, ein haufen Test-Scripte schreiben, ausprobieren, etc.
 
J

Jimmy1

Mitglied seit
27.07.2011
Beiträge
39
@automatthias.

wie ich schon sagte, for ... token=...
Könnte funktionieren. Ist aber arg kompliziert für einen Anfänger. Würdest du mal ein einfaches Beispiel für Palladin007 machen, z. B. mit "Peter, Hans, Lisa".


@Palladin007

Das ist für mich dann sozusagen komplett neu, weil ich den for-Befehl bisher noch kaum benutzt habe. Eigendlich gar nicht...

Muss ich mich dann ganz rein denken, ein haufen Test-Scripte schreiben, ausprobieren, etc.
Das ist das Los der Programmierer. :D

Grundsätzliche Infos über DOS-Befehle bekommst du, indem du eine DOS-Konsole aufrufst und folgendes eingibst:

Beispiele für den Befehl "for"

for /?>C:\For-Hilfe.txt
oder
Help for>C:\For-Hilfe.txt

In beiden Fällen befindet sich dann die Datei "For-Hilfe.txt" (kann man beliebig benennen) im Root von Laufwerk "C:\".


@Jimmy1:

Super, auf so jemanden hab ich gewartet^^
Ja, ist schon praktisch, wenn man einen arbeitslosen Programmierer kennt. :D


Ich hab mir einfach überlegt, dass ich ja ein Programm schreiben könnte, was Informationen zuverlässig schützt.
Hmm ... ? Ob da eine Batchfile das richtige ist? Kann ja jeder lesen, was drin steht.



... Deswegen möchte ich die Wörter einer Variable zuordnen, dass der PC z.B. bei den Namen auch Hans, Peter, Lisa, Max bestätigt, oder Peter, Hans, Lisa, Max.
Und dafür brauche ich halt eine Variable, die mehrere Wörter gespeichert hat, da eigendlich nicht die Reihenfolge wichtig ist, sondern welche Wörter angegeben werden.
Also ich packe jetzt mal meine Kristallkugel aus, und gehe davon aus, dass du mehrere Namen gleichzeitig in einer Variablen speichern willst. Dann, so wie ich es verstanden habe, willst du prüfen, ob die darin enthaltenen Namen mit gespeicherten Namen übereinstimmen.

Ich werde jetzt mal testen, was für diesen Fall praktikabel ist, und melde mich dann wieder.
 
J

Jimmy1

Mitglied seit
27.07.2011
Beiträge
39
Ok, hier mal ein Lösungsvorschlag.


Das Prinzip:

- User-Eingabe anfordern. Der User gibt z. B. ein: "Peter, Hans, Lisa."

- Entfernen unerwünschter Zeichen. 1* (siehe weiter unten)

- Aufsplitten der User-Eingabe, damit wir die einzelnen Name bekommen, die wir mit den Vorgaben vergleichen können.

- Vergleichen der eingegebenen Namen mit den Vorgabe-Namen.

- Ergebnis auswerten:
. . . Sind alle Vorgabe-Namen auch in der User-Eingabe, ist das Ergebnis OK (True).
. . . Ist auch nur 1 Vorgabe-Name nicht in der User-Eingabe, oder falsch geschrieben, ist das Ergebnis NICHT OK (False).

1* Hier habe ich einen Platzhalter eingefügt, da hier noch Fehlerbehandlungsroutinen eingefügt werden müssen. Welche und wieviele, ist jedem selbst überlassen. Zumindest sollten unerwünschte Zeichen aus der User-Eingabe gefiltert werden, die einen Vergleich verhindern, zwischen Vorgabe-Namen und User-Eingabe. Z. B. "Hans" ist NICHT gleich " Hans" (Leerzeichen enthalten). Auch Groß-, Klein-Schreibungs-Fehler sollten abgefangen werden, und so weiter.


Umsetzung:

Wichtig: Bei der Umsetzung habe ich zu Testzwecken vieles im Code eingefügt, das nur dazu dient, die entsprechenden Code-Stellen besser zu verstehen. Diese Stellen müssen natürlich im echten Code entfernt, oder auskommentiert werden.

Der Code ist als Batch-Datei im Anhang als "Filter-and-Compare-User-Input-v0-0-8.zip" Schreib mir bitte unbedingt, ob es was genutzt hat, oder nicht. Über Feedback von anderen freue ich mich natürlich auch. :up


Edit: Kleinen Flüchtigkeits-Fehler beseitigt und Hinweis hinzugefügt, dass die User-Eingabe nicht echt ist, solange die statischen Belegung der "InputVar" noch im Code ist.
 

Anhänge

Zuletzt bearbeitet:
Thema:

Einer Variable mehrere Wörter zuordnen

Einer Variable mehrere Wörter zuordnen - Ähnliche Themen

  • SSIS Variables window empty after upgrade to Windows 10 1903

    SSIS Variables window empty after upgrade to Windows 10 1903: Hello, after upgrade from Windows 10 1809 to 1903 the SSIS Variables window doesn't show any variables nor buttons to add/delete. Windows 10...
  • WMI environment variable query

    WMI environment variable query: I want to query with WMI if a environment variable exists. Since there is no "EXISTS" statement in WQL I have to find another way..
  • What are the rules regarding casing of values for environment variable USERNAME in Windows?

    What are the rules regarding casing of values for environment variable USERNAME in Windows?: One of my customers says that in his AD usernames have mixed case sometimes and besides that, that people are able to successfully login using...
  • Empfänger-Email-Adresse als Variable?

    Empfänger-Email-Adresse als Variable?: Hallo zusammen, eine Frage: Habe ich eine Chance in der Signatur meines Outlooks die Email-Adresse an die diese Email geschickt wird als Variable...
  • SP3 Secure boot control: Secure Variable Update is locked down!

    SP3 Secure boot control: Secure Variable Update is locked down!: Hallo! Ich habe ein Problem mit dem TPM. Ich habe bei meinem SP3 die Bitlocker-Verschlüsselung abgeschaltet und wahrscheinlich auch den...
  • Ähnliche Themen

    Oben