Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Die Antwort einer Batch abfragen

Frage Entwicklung Batch & Shell

Mitglied: Noobstar0815

Noobstar0815 (Level 1) - Jetzt verbinden

04.03.2013 um 10:35 Uhr, 1902 Aufrufe, 9 Kommentare

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 =)
Mitglied: 106543
04.03.2013 um 10:54 Uhr
Hallo @Noobstar0815,

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

Grüße
Exzellius
Bitte warten ..
Mitglied: Noobstar0815
04.03.2013 um 11:12 Uhr
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))?
Bitte warten ..
Mitglied: Noobstar0815
04.03.2013 um 11:16 Uhr
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...
Bitte warten ..
Mitglied: 106543
04.03.2013, aktualisiert um 11:42 Uhr
Hi,

zuerst mal schau dir mal folgenden Link an und verwende bitte zukünftig "Code-Tags". Diese machen das lesen deines Quellcodes viel einfacher
http://www.administrator.de/faq/20

zu deinen Antworten:
du wirst nicht um mehrere If-Abfragen herumkommen, allerdings nur eine pro Programm, welches aktualisiert werden muss.
D.h.
01.
set asw=0 
02.
set /p asw="Bitte alle zu aktualisierenden Programme angeben (Bsp.: 134):" 
03.
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

Grüße
Exzellius

PS: Grußformeln sind nicht schwer anzuwenden ...
Bitte warten ..
Mitglied: Arano
04.03.2013 um 11:41 Uhr
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

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
Bitte warten ..
Mitglied: 106543
04.03.2013 um 11:44 Uhr
Hi,

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

Grüße
Exzellius
Bitte warten ..
Mitglied: Noobstar0815
04.03.2013 um 12:01 Uhr
Danke, allerdings bräuchti ich noch eine Erklärung für den Code :/
01.
@echo off 
02.
set "name=mein text" 
03.
set "num=-1" 
04.
:loop 
05.
set /a num=num+1 
06.
call set "name2=%%name:~%num%,1%%" 
07.
if defined name2 ( 
08.
echo(%name2% 
09.
goto :loop 
10.
) 
Kannst du mir den evtl erklären? *Lieb guck* Bin leider grade zu blöd um ihn zu verstehen
Bitte warten ..
Mitglied: colinardo
04.03.2013 um 12:31 Uhr
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
Bitte warten ..
Mitglied: bastla
04.03.2013 um 15:27 Uhr
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
01.
echo %asw%|findstr "1">nul && echo Installation Java 
02.
echo %asw%|findstr "2">nul && echo Installation Adobe Reader 
03.
echo %asw%|findstr "3">nul && echo Installation Flash Player 
04.
echo %asw%|findstr "4">nul && echo Installation Shockwave
ein Weg sein ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
gelöst Outlook auf Mail Antworten und es verschwindet (2)

Frage von miichiii9 zum Thema Outlook & Mail ...

Batch & Shell
Warum greift meine if-Abfrage nicht? (1)

Frage von jan999 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Outlook & Mail
Schriftart ändern bei Antwort auf Besprechungsanfrage (5)

Frage von Eduuaard zum Thema Outlook & Mail ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Gebäude mit WLAN ausstatten (9)

Frage von udobec zum Thema LAN, WAN, Wireless ...