noobstar0815
Goto Top

Die Antwort einer Batch abfragen

Ich möchte mir gerne eine Batch-Datei schreiben, habe allerdings nicht sehr viel Ahnung davon und habe auf diese Frage im Internet noch nichts gefunden. Die Batch-Datei soll mir helfen die Updates auf der Arbeit schneller auf allen Rechnern zu installieren. Dazu soll die Batch-Datei mich in der Konsole fragen, welche Programme ich updaten möchte. Entweder 1 für Alle oder 2 für bestimmte Updates. So weit so gut. Wenn ich allerdings nur bestimmte Updates installieren möchte soll ich gefragt werden welche Updates, z.B. 1 Java 2 Adobe Reader 3 Flash Player 4 Shockwave. Das Problem habe ich dann bei der Antwortabfrage, da ich es gerne hätte, dass ich einfach 134 eingeben kann und die Datei dann Java, Flash Player und Shockwave isntalliert. Die einzige Lösung die mir bis jetzt einfällt ist mit if, allerdings wäre es bei 6 Möglichkeiten viel zu lang. (1 12 123 1234 12345 2 23 234 etc...) Gibt es einen Scan-Befehl für Batch-Dateien? Zb "wenn 1 vorkommt dann Java, wenn 2 vorkommt dann Adobe Reader"

Leider kann ich die Frage nicht kürzer fassen und eine Antwort habe ich darauf auch noch nicht im Internet gefunden. Mein Ausbilder kann mir dabei leider auch nicht weiter helfen :D
Schon mal Danke an euch im Vorraus =)

Content-ID: 202719

Url: https://administrator.de/forum/die-antwort-einer-batch-abfragen-202719.html

Ausgedruckt am: 28.12.2024 um 14:12 Uhr

106543
106543 04.03.2013 um 10:54:23 Uhr
Goto Top
Hallo @Noobstar0815,

nach 1 min googlen bin ich auf folgende Seite gestoßen face-smile
http://phpperformance.de/pruefen-ob-ein-string-eine-bestimmte-zeichenke ...
die dritte Variante müsste für dich passend sein.

Grüße
Exzellius
Noobstar0815
Noobstar0815 04.03.2013 um 11:12:52 Uhr
Goto Top
Hmm, leider hilft mir das nur teilweise weiter, da ich nicht genau weis, wie ich es dann zu schreiben habe... :D
Kannst du mir evtl. sagen wie ich es schreiben muss?
Aktuell sieht es bei mir so aus :
set asw=0
set /p asw="Bitte alle zu aktualisierenden Programme angeben (Bsp.: 134):"
Wie schaffe ich es dann, dass sich if(preg_match("/134/",$string)) auf die Antwort bezieht? Funktioniert
if(preg_match("/134/",$asw))?
Noobstar0815
Noobstar0815 04.03.2013 um 11:16:27 Uhr
Goto Top
Bzw: Funktioniert es, dass wenn ich dann zb 3 Programme auswähle und dann 134 eingebe, dass es dann auch alle 3 ausführt nacheinander mit wait/call, ohne dass ich dann für jede Möglichkeit ein if erstellen mus? weil das würde ziemlich lange dauern, gibt halt zuviele Möglichkeiten... 1 12 13 14 15 16 123 124 125 etc...
106543
106543 04.03.2013 aktualisiert um 11:42:43 Uhr
Goto Top
Hi,

zuerst mal face-smile schau dir mal folgenden Link an und verwende bitte zukünftig "Code-Tags". Diese machen das lesen deines Quellcodes viel einfacher
Formatierungen in den Beiträgen

zu deinen Antworten:
du wirst nicht um mehrere If-Abfragen herumkommen, allerdings nur eine pro Programm, welches aktualisiert werden muss.
D.h.
set asw=0
set /p asw="Bitte alle zu aktualisierenden Programme angeben (Bsp.: 134):"  
if(preg_match("Hier dein String der gefunden werden soll(z.B. Java oder 1 wenn Java 1 ist)","Hier der String der überprüft werden soll)) "Hier den Befehl für das jeweilige Update einfügen"  
Ich hoffe ich konnte dir helfen face-smile

Grüße
Exzellius

PS: Grußformeln sind nicht schwer anzuwenden ...
Arano
Arano 04.03.2013 um 11:41:15 Uhr
Goto Top
Moin moin

Exzellius hat sich da wohl versehen !
Er hat eine PHP-Funktion vorgeschlagen, diese kannst du logischerweise nicht in einer Batch-Datei verwenden !
Das hätte dir allerdings auch auffallen können face-wink

Nun denn,
ich würde vorschlagen das du die Eingabe einfach Zeichenweise abarbeitest !
Das erlaubt auch die willkürliche Eingabe der Zahlen: 5143 162 41

Schau mal hier: tutorials.de Batch Zeichenweise das sollte dir weiterhelfen können.
Anstelle des echos in Zeile 8 schiebst du dann ein IF-ELSE-Konstrukt ein das für jedes Zeichen eine andere Funktion aufruft welche die gewünschte Aufgabe erfüllt.

Zumindest __theoretisch__ macht das einen guten Eindruck *g*


Viel Erfolg
~Arano
106543
106543 04.03.2013 um 11:44:47 Uhr
Goto Top
Hi,

Ups *Kopf -> Tisch*
Danke für die Info @Arano :D
Dann vergiss meinen Lösungsvorschlag ganz schnell face-smile

Grüße
Exzellius
Noobstar0815
Noobstar0815 04.03.2013 um 12:01:08 Uhr
Goto Top
Danke, allerdings bräuchti ich noch eine Erklärung für den Code :/
@echo off
set "name=mein text"  
set "num=-1"  
:loop
set /a num=num+1
call set "name2=%%name:~%num%,1%%"  
if defined name2 (
echo(%name2%
goto :loop
) 
Kannst du mir den evtl erklären? *Lieb guck* Bin leider grade zu blöd um ihn zu verstehen
colinardo
colinardo 04.03.2013 um 12:31:26 Uhr
Goto Top
Das Script geht den Text der Variablen name Buchstabe für Buchstabe durch und speichert diesen in der Variablen name2 und gibt diesen auf der Console aus, solange bis es alle Buchstaben von name durchgegangen ist.

Grüße Uwe
bastla
bastla 04.03.2013 um 15:27:04 Uhr
Goto Top
Hallo @ All!

Vielleicht noch ein weiterer Ansatz: Da es ja eigentlich darum geht, bei Vorhandensein einer bestimmten Wahl eine Installation zu starten, könnte auch
echo %asw%|findstr "1">nul && echo Installation Java  
echo %asw%|findstr "2">nul && echo Installation Adobe Reader  
echo %asw%|findstr "3">nul && echo Installation Flash Player  
echo %asw%|findstr "4">nul && echo Installation Shockwave  
ein Weg sein ...

Grüße
bastla