drmarksman
Goto Top

In Batch eine Text Variable und ein Array vergleichen

Hallo Leute!
Ich habe mich wieder zu meinen Ursprüngen des Programmierens zurück begeben und bin dabei ein kleines Programm in Batch zu schreiben.
Mein Problem ist jetzt folgendes:

Ich will eine Variable die ich durch
set /p open=open up:
bestimme mit einem Array
 text[!a!]
vergleichen und dann am besten mit einer FOR Schleife alle Werte zu vergleichen.

Um jetzt auf den Knackpunkt zu kommen:

Ich bekomm die Syntax nicht hin... Mit Parametern kenne ich mich nicht besonders gut aus. Wie siehts aus könnt ihr mir da helfen?
Ich versuche es in der Zwischenzeit weiter, mal schaun wer schneller ist XD... (Ich weiß das ich es ohne Hilfe nicht hinbekommen werde!)

Danke im Vorraus,
Gruß Marksman

Content-Key: 298297

Url: https://administrator.de/contentid/298297

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: rubberman
rubberman 05.03.2016 aktualisiert um 13:12:41 Uhr
Goto Top
Hallo Marksman,

da es in Batch keine Arrays gibt (nur assoziative Arrays, die nichts weiter als Einzelvariablen darstellen), würde mich interessieren, wie du dieses Array definiert hast und woher die Variable a für den Index kommt.

Grüße
rubberman
Mitglied: DrMarksman
DrMarksman 05.03.2016 um 14:00:34 Uhr
Goto Top
Zitat von @rubberman:

da es in Batch keine Arrays gibt (nur assoziative Arrays, die nichts weiter als Einzelvariablen darstellen), würde mich interessieren, wie du dieses Array definiert hast und woher die Variable a für den Index kommt.

set "a=0"  
FOR /f "tokens=*" %%i in (test.txt) do (  
set text[!a!]=%%i
rem echo !text[%a%]!
set /a "i+=1"  
echo %%i
)
rem set %temp%=%a%
set /p open=open up:
if %open%==text[1] echo geht

Damit lese ich im moment die Textdatei test.txt einzelnt aus und speichre mir die Zeilen in den Variablem... hoffentlich... Ich bin mir da nicht so sicher ob das so klappt weil ich wie du siehst die Variable immer sofort ausgebe. Wenn ich sie außerhalb der For Schleife ausgeben will wird mir nur die Meldung angezeigt, dass @echo ausgescheltet wäre.
Ich hoffe das hilft. Wenn du einen anderen Lösungsweg findest bei dem ich eine ungewisse Anzahl an Variablen deklarieren kann sag mir bitte bescheid!

Danke
Viele Grüße Dr.Marksman
Mitglied: rubberman
rubberman 05.03.2016 um 17:04:56 Uhr
Goto Top
Das FINDSTR Tool hat die Option /G: wo man eine Datei für Suchzeichenfolgen angeben kann. Damit ersparst du dir den gesamten Dateiinhalt in Umgebungsvariablen zu speichern, nur um Vergleiche anzustellen (zumal man das alternativ auch ad hoc in der Schleife tun könnte).

Grüße
rubberman
Mitglied: DrMarksman
DrMarksman 05.03.2016 um 17:17:09 Uhr
Goto Top
Wie geht dann die Syntax von FIndstr mit /G? Also zum Beispiel in meinem Fall? Ich bin etwas aufgeschmissen...


Danke für deine Antwort!
Mitglied: rubberman
rubberman 05.03.2016 um 17:32:00 Uhr
Goto Top
Bitte führe
findstr /?
aus, um die Beschreibung der Optionen zu bekommen.

@echo off &setlocal

set /p "open=open up: "  

echo(%open%|findstr /lxg:"test.txt">nul  

if errorlevel 1 (
  echo nicht gefunden
) else (
  echo gefunden
)

pause
Achte darauf dass die Textdatei ANSI kodiert ist. Das Verhalten der Schleife in deinem anderen Thread könnte darauf hin deuten, dass sie UTF-8 kodiert sein könnte oder ähnliches ...

Grüße
rubberman