8.5k Aufrufe
Gefragt in WindowsXP von romero Mitglied (323 Punkte)
servus,

ich nochmal. wenn ich mit der IF-abfrage folgendes abfrage, wie mach ich das am besten?

also es wird ein bereich mittels set angegeben:z.b. aa123oder a123.
nun soll er aber abfragen,wenn bereich = aa* (also es sind immer danach 3 zahlen von 0-9),dann "dasunddas",ansonsten,wenn bereich = a*,dann "dasunddas",sonst FEHLER usw.

und wie kann ich ihm sagen,das er dann das "a"groß schreiben soll?

24 Antworten

0 Punkte
Beantwortet von jofischi Experte (1.2k Punkte)
Bist du sicher hier im richtigen Unterforum zu sein?
Wovon sprichst du eigentlich?
0 Punkte
Beantwortet von batti-batch Einsteiger_in (81 Punkte)
Hallo Romero,


das Problem lässt sich mit mit einem relativ einfachen Programm sehr leicht lösen.

Um die Wirkungsweise zu verdeutlichen, habe ich die Ausgabe der Werte etwas umfangreicher ausgestaltet.

Bei der Umwandlung von a in A wird jedes a berücksichtigt, also auch solche, die sich an anderer Stelle des Variablenwertes befinden.

Die Zuweisung des Wertes für die Variable kannst Du im SET-Block vornehmen.

@ECHO off
SETLOCAL


REM
REM Testprogramm
REM Test, ob einfaches oder doppeltes a am Anfang
REM eines Variablenwertes steht

REM https://supportnet.de/t/2211287
REM
REM (c) batti-batch 02/2009
REM
REM getestet unter Windows 2000


REM ************************ SET-Block Beginn ************************

REM Variable, die am Anfang ein einfaches
REM oder doppeltes a haben kann
SET "bereich_1=aa123"

REM ************************ SET-Block Ende **************************


REM a in A umwandeln
SET "bereich_1a=%bereich_1:a=A%"


REM Zweifaches A vorhanden?
SET "bereich_1b=%bereich_1a:~0,2%"
IF [%bereich_1b%] EQU [AA] GOTO :zweifaches_a


REM Einfaches A vorhanden?
SET "bereich_1b=%bereich_1a:~0,1%"
IF [%bereich_1b%] EQU [A] GOTO :einfaches_a


REM Weiter zur Fehlerbehandlung
GOTO :fehler


:zweifaches_a
ECHO Erfolg: Zweifaches A am Anfang der Variablen
ECHO "%bereich_1a%" gefunden.
ECHO Der Originalwert der Variablen war %bereich_1%.
GOTO :eof


:einfaches_a
ECHO Erfolg: Einfaches A am Anfang der Variablen
ECHO "%bereich_1a%" gefunden.
ECHO Der Originalwert der Variablen war %bereich_1%.
GOTO :eof


:fehler
ECHO Fehler: Es wurde eine andere Zeichenfolge
ECHO am Anfang der Variablen "%bereich_1%" gefunden.


Es wäre nett, wenn Du Bescheid gibst, ob das Programm Dein Problem gelöst hat.


Viel Spaß beim Testen.

Herzliche Grüße
batti-batch
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
kannst du mir das mal in meins einbinden bitte?

ab "eingabe des bereichs" bzw ab dem befehl SET bis GOTO Suche

wäre das möglich?vielen dank bis dahin.


@ECHO OFF

:: Eingabe des Flugzeugtyps

:Eingabe
CLS
SET Flugzeug=
SET Typ=
SET Bereich=
SET Sektion=

SET /P Typ=Bitte geben Sie den Flugzeugtyp an:
IF [%Typ%]==[] GOTO Eingabe
GOTO Auslesen

:: Datenabgleich

:Auslesen
IF /I %Typ%==A332 (
SET Flugzeug=A330-200
) ELSE IF /I %Typ%==A333 (
SET Flugzeug=A330-300
) ELSE IF /I %Typ%==A340 (
SET Flugzeug=A340
) ELSE IF ERRORLEVEL 1 (
ECHO Fehler
) ELSE GOTO Fehler

:: Eingabe des Bereichs

SET /P Bereich=Bitte geben Sie den Bereich an:
GOTO Suche


:: Ordnersuche

:Suche
ECHO.
ECHO Flugzeugtyp: %Flugzeug%
ECHO Bereich :%Bereich%
ECHO Sektion: %Sektion%
ECHO.
ECHO Sind die Daten korrekt eingeben?
ECHO.
ECHO.

:Ordner
cd /D D:\save\Olutex\%Flugzeug%\
dir /B *.txt > STL_%Typ%_%Bereich%.txt
move STL_%Typ%_%Bereich%.txt D:\save\Olutex

cd /D D:\save\Olutex\
Excel-Export.vbs /input:D:\save\Olutex\%FZ%\Sekt13-14.xls /worksheet:Ber_%Bereich% /output:D:\save\Olutex\%FZ%\STL_%Flugzeugtyp%_%Bereich%.txt

GOTO Ende
PAUSE

:: Ausgabe Fehlermeldung

:Fehler
ECHO Der angegebene Flugzeugtyp existiert nicht. Bitte ueberpruefen Sie ihre Eingabe!
PAUSE
GOTO Eingabe

:: Ende

:Ende
PAUSE
GOTO Eingabe
0 Punkte
Beantwortet von batti-batch Einsteiger_in (81 Punkte)
Hallo Romero,


hier mal eine Version, die Du in Dein Script einbauen könntest.

Das Programm ist alleine lauffähig, damit Du es zunächst in Ruhe Deinen Tests unterziehen kannst.

Wenn alles Deinen Vorstellungen entspricht und beide Scripts für sich fehlerfrei laufen (das solltest du wirklich gründlich testen!), kannst Du es ab der gestrichelten Linie in Dein Script einbinden und dann erneut testen.

Hier das Script:

@ECHO off
SETLOCAL


REM
REM Testprogramm
REM Test, ob einfaches oder doppeltes a am Anfang
REM eines Variablenwertes steht
REM Version 2

REM https://supportnet.de/t/2211287
REM
REM (c) batti-batch 02/2009
REM
REM getestet unter Windows 2000


REM ************************ SET-Block Beginn ************************

REM ************************ SET-Block Ende **************************


REM --------------------- siehe Begleittext --------------------------


:: Eingabe des Bereichs
:bereich

REM Eingabe eines Wertes, der am Anfang ein einfaches
REM oder doppeltes a haben kann


ECHO Bitte geben Sie den Bereich ein^!
ECHO.
ECHO Es sind folgende Werte erlaubt:
ECHO (hier solltest Du die moeglichen Eingaben auffuehren)
ECHO oder "E" fuer Ende eingeben
ECHO.
SET /p "bereich=Bitte Ihre Eingabe: "


REM Zurueckweisen einer leeren Eingabe
REM Ruecksprung zur Eingabe
IF [%bereich%] EQU [] GOTO :bereich


REM "E" fuer Programmende eingegeben
REM Programm beenden
SET "ende=%bereich:~0,1%"
IF [%ende%] EQU [%bereich%] IF [%ende%] EQU [E] (ECHO Programmende & GOTO :eof)


REM a in A umwandeln
SET "bereich=%bereich:a=A%"


REM Zweifaches A vorhanden?
SET "bereich_1=%bereich:~0,2%"
IF [%bereich_1%] EQU [AA] GOTO :zweifaches_a


REM Einfaches A vorhanden?
SET "bereich_1=%bereich:~0,1%"
IF [%bereich_1%] EQU [A] GOTO :einfaches_a


REM Fehlerbehandlung
REM Ruecksprung zur Eingabe
GOTO :bereich


:zweifaches_a
ECHO Zweifaches A gefunden
GOTO :suche


:einfaches_a
ECHO Einfaches A gefunden

:suche


Ich habe die Abschnitte ":einfaches_a" und ":zweifaches_a" im Programm belassen, damit Du hier einen Ansatz hast, falls Du weitere Ergänzungen vornehmen möchtest.

Der Anwender des Programm hat hier die Möglichkeit, durch Eingabe des Großbuchstabens "E" das Programm gezielt zu verlassen; eine Möglichkeit, die Du auch bei den anderen Abfragen vorsehen kannst.

Du siehst also, das es mit einem einfachen Kopieren hier keineswegs getan ist sondern sich zahlreiche Möglichkeiten der Optimierung anbieten. Aber ich will Dir nicht gleich alles verraten, denn Übung macht den Meister.


Viel Spaß beim Testen.

Herzliche Grüße
batti-batch
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
also muss sagen,datt funzt wunderbar...

vielen dank dafür,aber es geht ja weiter :D

habs bissl umgeschrieben,so das er,wenn er nur zahlen eingibt das er ne fehlermeldung bringt (muss ja noch ausgebaut werden).aber wie kann ich ihm verklickern,dass wenn er mehr als 3aaa's oder so eingibt,dann ebenfalls ne fehlermeldung rausgibt.gehtd das irgendwie?und was hat das hinter dem bereich mit dem ~0,1% bzw ~0,2% zu tun?das versteh ich nicht?

und wie kann ich sagen das dahinter immer 3 zahlen kommen?egal welche...das auch über dieses verfahren wie mit dem "a"?
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
gibts eigentlich n ODER-befehl bei IF?brauch den nämlich
0 Punkte
Beantwortet von batti-batch Einsteiger_in (81 Punkte)
Hallo Romero,


einen "ODER"-Befehl im wortwörtlichen Sinne gibt es nicht, wohl aber eine ELSE-Klausel, die Deiner Erwartung am ehesten entsprechen dürfte. Schau doch mal in der Hilfe des IF-Befehls nach.

Das mit den drei (oder mehr) a am Anfang ist ein Problem...
Wie sehen denn diese Bereichseingaben aus? Wieviele sind das? Ist deren Anzahl und Wert (also auch die Länge... )variabel? Sind es nur eine Handvoll oder ein paar mehr?
Wenn es eine feste unveränderliche Menge wäre, wäre es ideal...

Das wären hilfreiche Angaben, denn danach könnte man sich Gedanken wegen einer Lösung machen...

Herzliche Grüße
batti-batch
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
erstmal vielen dank,das du mir dabei hilfst.

das mit dem else hab ich schon gelesen,dachte es gibt so n "befehl" wie not und and (2 ifs-vergleiche hintereinander).

also es sind entweder 1 oder 2 buchstaben und dahinter sind immer 3 zahlen,egal welche.meistens beginnend mit einer 0 gefolgt von weiteren 2 zahlen.

es gibt zwar 2,3 spezielle bereiche die 3 oder 4 zahlen haben,aber die kann ich dann individuell gestalten.die buchstaben gehen von a bzw aa bis hin zu s bzw ss,also fast das ganze alphabet.

kann man das nicht irgendwie vorher definieren?also das man sagt,die und die bereiche gibt es bzw die speziellen.

also es soll so aussehen,das wenn einer einen wert eingibt,also z.b. dd089 (so sehen sie halt aus) oder d090 dann soll er bei doppelbuchstaben einen SET=... machen bzw einen bei einfachen buchstaben.die zahlen dahinter liest er aus einer exceltabelle aus,das was du schon gesehen hast.also sie ist variabel in der eingabe.

dachte mir da an sowas:

SET /P bereich=bereich eingeben:

SET bereich_11=AA*** (sterne sollen für die verschiedenen "3" zahlen stehen)
SET bereich_22=BB*** usw.
SET bereich_1=A*** usw.

dann:

IF bereich=bereich_11 (
SET=irgendwas
) ELSE IF bereich=bereich_22 (
SET=irgendwas
) ELSE IF bereich=bereich_44 (
SET=irgendwas
) ELSE ... (
SET=...
) ELSE Fehler (wenn angebener bereich nicht vorhanden ist bzw falsch geschrieben wurde (mit den buchstaben))

die andere fehlermeldung kommt ja von der exceltab.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
diese doppelbuchstaben und die speziellen bereiche gehören zu einem oberbereich,die anderen zu dem anderen oberbereich.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
hab was gefunden:

also wenn es mehr als 5 stellen sind,und so es auch bei den 4 oder halt mehr stellen...

@ECHO off

:abc

SET /P name=name eingeben:
IF %name% GTR %name:~0,5% (
ECHO zu gross
) ELSE ECHO genau richtig

GOTO abc
PAUSE
...