online 1
gast (50)

/ Forum / WindowsXP

WindowsXPWindowsXP

Fragevon dinc vom 27.02.2020, 13:50 Options

batch: mehrere zahlen als benutzereingabe verarbeiten

hallo zusammen,

ich möchte folgendes realisieren:

- benutzer hat die auswahl zwischen mehreren menüpunkten (1,2,3,4,5,6)
- diese soll er aber auch kombinieren können - sprich er kann eingaben 2,4,5
- nun soll das programm entsprechende externe bat dateien aufrufen und diese dann laut der benutzereingabe nacheinander ausführen - beispiel:

benutzer gibt 2,4.6 ein
danach werden die dateien 2.bat, 4.bat und 6.bat ausgeführt.

wie kann ich solche eingaben (mit komma getrennt) innerhalb der batch datei verarbeiten?

für eure hilfe schoneinmal vielen dank :)

gruss


Antwort schreiben

Antwort 1 von batti-batch vom 02.03.2020, 16:14 Options

Hallo dinc,


hier ein Vorschlag zur Lösung Deines Problems.

Das Batch-Programm verarbeitet alle Ziffern von 1...6; die Eingabereihenfolge ist dabei beliebig. Die Abarbeitung erfolgt immer in aufsteigender Reihenfolge der Eingaben.
Wurde die Taste "E" (oder "e") gedrückt (auch zusammen mit Ziffern), wird das Programm beendet.
Keine, leere oder mehrfache Eingaben werden durch das Programm zurückgewiesen.

Trennzeichen zwischen den Eingaben können Semikola, Kommata und Leerzeichen sein.
Die Reihenfolge dieser Trennzeichen ist dabei beliebig.

Die Eingabe von Sonderzeichen fängt das Programm nicht ab.

An Stelle der Aufrufe weiterer Batch-Programme sind zur Demonstration des Ablaufs lediglich ECHO-Befehle eingebaut.
Notwendige Anpassungen kannst durch Änderungen im SET-Block sowie im CALL-Block sehr leicht selbst vornehmen.

Hier das Programm:

@ECHO off
SETLOCAL enabledelayedexpansion
MODE CON lines=30

REM
REM Testprogramm
REM
REM Menuestruktur mit 6 Eintraegen
REM mit beliebige Reihenfolge der Eingabe
REM
REM http://www.supportnet.de/threads/1688110
REM
REM (c) batti-batch
REM Batch erstellt am 02.03.2008
REM
REM Programm gestestet unter Windows 2000
REM 

REM SET-Block
SET "bat_1=Laufwerk Pfad und Dateiname der ersten Batch-Datei"
SET "bat_2=Laufwerk Pfad und Dateiname der zweiten Batch-Datei"
SET "bat_3=Laufwerk Pfad und Dateiname der dritten Batch-Datei"
SET "bat_4=Laufwerk Pfad und Dateiname der vierten Batch-Datei"
SET "bat_5=Laufwerk Pfad und Dateiname der fuenften Batch-Datei"
SET "bat_6=Laufwerk Pfad und Dateiname der sechsten Batch-Datei"

:eingabe
CLS
COLOR
SET /a fehler=0

ECHO.
ECHO.
ECHO Menueauswahl des Programmpaketes %~nx0
ECHO.
ECHO.
ECHO.
ECHO Menuepunkt 1 ... ^>^> Ziffer 1                Menuepunkt 2 ... ^>^> Ziffer 2
ECHO.
ECHO Menuepunkt 3 ... ^>^> Ziffer 3                Menuepunkt 4 ... ^>^> Ziffer 4
ECHO.
ECHO Menuepunkt 5 ... ^>^> Ziffer 5                Menuepunkt 6 ... ^>^> Ziffer 6
ECHO.
ECHO.
ECHO Programmende ... ^>^> Taste E
ECHO.
ECHO.
ECHO Bitte waehlen Sie einen oder mehrere Menuepunkte aus^^!
ECHO.
ECHO Trennzeichen zwischen den Eingaben koennen Leerzeichen,
ECHO Semikola oder Kommata sein.
ECHO.
ECHO.
ECHO.
SET /p eingabe=Bitte Ihre Eingabe:
ECHO.

IF "%eingabe%" EQU "" (
SET /a fehler=1
ECHO Eine Eingabe ist erforderlich.
ECHO.
GOTO :fehler
)

IF "%eingabe%" EQU " " (
SET /a fehler=1
ECHO Eine Eingabe ist erforderlich.
ECHO.
GOTO :fehler
)


ECHO %eingabe% | FIND /i "e" >NUL
IF ERRORLEVEL 1 (GOTO :weiter)
IF ERRORLEVEL 0 (GOTO :ende)

:weiter
FOR /d %%a IN (1 2 3 4 5 6) DO (
SET /a zaehler%%a=0
FOR /d %%i IN (%eingabe%) DO (
IF %%i EQU %%a (SET /a zaehler%%a=!zaehler%%a!+1)
)
IF !zaehler%%a! GTR 1 (ECHO Fehler^^! Die Eingabe "%%a" erfolgte !zaehler%%a!-fach^^!& SET /a fehler=fehler+1)
)

:fehler
IF !fehler! GEQ 1 (
COLOR cf
IF !fehler! GTR 1 (SET wort=sind) ELSE (SET wort=ist)
ECHO.
ECHO.
ECHO Es !wort! !fehler! Fehler aufgetreten.
ECHO Durch Druecken einer beliebigen Taste kehren Sie zur Eingabe zurueck.
PAUSE > NUL
GOTO :eingabe
)

REM CALL-Block
REM Start der Unterprogramme
REM Zeilen aendern (Beispiel fuer Bat_1):
REM IF !zaehler1! EQU 1 CALL "%bat_1%"

IF !zaehler1! EQU 1 echo bat 1
IF !zaehler2! EQU 1 echo bat 2
IF !zaehler3! EQU 1 echo bat 3
IF !zaehler4! EQU 1 echo bat 4
IF !zaehler5! EQU 1 echo bat 5
IF !zaehler6! EQU 1 echo bat 6

:ende
ECHO.
ECHO Fertig^^! Das Programm %~nx0 wurde beendet.


Viel Spass beim Testen!

Herzliche Grüße
batti-batch

Ähnliche Themen

Zwischenzeichen bei Zahlen entfernen
Partisan84  10.07.2007 - 71 Hits - 3 Antworten

Batch aktuelles Verzeichnis
Rudi0815  12.09.2007 - 289 Hits - 1 Antwort

Programmaufruf mit Batch-Datei
Martina  09.11.2007 - 370 Hits - 5 Antworten

befehl wenn schliessen / benutzereingabe
batcher  25.11.2007 - 83 Hits - 1 Antwort

Batch Ordner Downloaded
Harvey17  14.03.2008 - 106 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026