Supportnet Computer
Planet of Tech

Supportnet / Forum / WindowsXP

batch: mehrere zahlen als benutzereingabe verarbeiten





Frage

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 1 von batti-batch

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 https://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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: