Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Update-Skript mit Batch-Datei

Anleitung Entwicklung Batch & Shell

Mitglied: Noobstar0815

Noobstar0815 (Level 1) - Jetzt verbinden

12.03.2013, aktualisiert 20.03.2013, 6473 Aufrufe, 3 Kommentare, 1 Danke

Guten morgen

An diesem Skript saß ich, als Fachinformatik-Azubi fast 1 Woche. Da mir dieses Forum ziemlich geholfen hat, dachte ich, ich stelle es mal als Anleitung hier rein, da es sehr praktisch ist, wenn man mehr als 10 Rechner Updaten muss.
Dieses Skript bezieht sich auf Updates von Java, Adobe Programmen, Firefox und MS Defender, allerdings kann mit selbigen Prinzip eigentlich alles aktualisiert werden.
Meine Skripte liegen in dem Ordner G:\automatischeupdateswoechentlich\Update-Skripte. G:\ ist unser Server; da mir der ganze Pfad zulang war, habe ich es am Anfang des Skriptes per "net use" definiert. Ich habe aus Gründen der Wartung für jedes einzelne Programm welche aktualisiert wird noch eine eigene Batch-Datei erstellt. Die Patches lade ich mir wenn möglich direkt als .msi, alternativ geht es auch als .exe. Diese liegen in G:\automatischeupdateswoechentlich\Java(oder Adobe Flash Player Active X etc). Am Anfang der Datei mache ich eine kurze Abfrage, ob ich entweder [1] Alle Programme aktualisieren möchte, oder [2] ausgewählte Programme aktualisiere.
Ich persönlich fand die Funktion für [2] ziemlich schwierig zu verstehen bzw. rauszufinden, da sie nicht dokumentiert ist. Die Funktion lautet
01.
  
02.
set name=0 
03.
set /p name="Bitte alle zu aktualisierenden Programme angeben (Bsp.: 134):" 
04.
 
05.
set "num=-1"  
06.
:loop  
07.
set /a num=num+1  
08.
 
09.
call set "name2=%%name:~%num%,1%%"  
10.
if defined name2 (  
11.
echo(%name2%  
12.
if "%name%"=="" goto END 
13.
if %name2%==1 call "G:\Update-Skripte\Java.bat" 
14.
if %name2%==2 call "G:\Update-Skripte\FlashX.bat" 
15.
if %name2%==3 call "G:\Update-Skripte\FlashPlug.bat" 
16.
if %name2%==4 call "G:\Update-Skripte\shockwave.bat" 
17.
if %name2%==5 call "G:\Update-Skripte\Firefox.bat" 
18.
if %name2%==6 call "G:\Update-Skripte\adobereader.bat" 
19.
if %name2%==7 call "G:\Update-Skripte\msdefender.bat" 
20.
if %name2%==8 shutdown -r -t 0 
21.
if %name2%==9 shutdown -c -t 0 
22.
goto :loop  
23.
) 
Sinn dieses Codes ist es, dass "num" angibt, von welcher Stelle in "name" an gesucht wird. 1%% gibt dabei an, wie viele Zeichen durchsucht werden, das heißt gibt man dort 5 an, scannt er am "num" die nächsten 5 Zeichen. Da er mit 1%% aber jedes Zeichen einzeln nimmt, und da "num" immer weiterläuft und so verhindert wird, dass mehrfach die selbe Stelle abgefragt wird, kann man so eine beliebig lange Zeichenfolge eingeben.
Die Antwortmöglichkeiten stehen ein Stück über dem "set name=0", aber da diese grade nicht wichtig sind, lasse ich sie aus.
Mir "shutdown -r /-c" kann ich noch angeben, ob ich den PC anschließend neustarten oder herunterfahren möchte, oder weder noch. Wichtig ist, dass, da die "shutdown"-Befehle auf 8 bzw 9 definiert wurden, diese Zahl unbedingt zum Schluss kommt, da der PC sonst mitten während der Batch-Vorgang läuft heruntergefahren wird.
Wie schon erwähnt verweisen die if-Bedingungen nicht direkt auf die zu installierende Datei, sondern nur auf eine weitere Batch Datei. Diese Batch-Dateien sehen ca. so aus:
01.
 @for %%f in ("G:\Adobe Shockwave\*.*") do start /wait "" "%%f" /qn 
02.
echo Shockwave fertig
Da sie alle etwas variieren kann ich gerne auf Nachfrage die restlichen auch noch posten. Durch "@for %%f in (...\*.*)"
wird jede Datei in diesem Ordner mit "do start /wait "" "%%f" /qn" ausgefüht. /qn deaktiviert bei einer .msi die grafische Oberfläche. /wait gibt an, dass die Datei solange geöffnet bleibt, bis der Update-Vorgang abgeschlossen ist. Dies ist wichtig, da die Hauptdatei diese Datei mit "call" gerufen hat, und auch erst weiter macht, sobald die Datei geschlossen wurde. (Tut mir leid, etwas unverständlich, weiß grade nicht genau wie ich es schreiben soll) Für den Fall dass doch alle Updates installiert werden, habe ich wie schon erwähnt zu Beginn eine Abfrage gemacht. Wird diese mit [1] für Alle beantwortet, springt die Datei per "goto" zu :ALL. :ALL ist simpel aufgebaut, die Dateien werden nacheinander per "call" gerufen, dabei gibt "echo" an welche Datei er grade ruft. Diese Dateien enthalten selbst noch ein "echo Fertig" welches mir sagt, dass der Update-Vorgang dieser Datei abgeschlossen wurde (sagt aber nicht, ob ein Fehler vorliegt oder nicht). So ich denke das war es im Großen und Ganzen, zum Schluss noch einmal der gesamte Code falls es jemanden intressiert. Für Fragen, Anmerkungen oder Verbesserungen bin ich jeder Zeit offen, trotzdem hoffe ich dass es euch gefällt =)
Falls es bezüglich des Codes fragen gibt schreibt mich einfach an =)
EDIT: Mir wurde geraten statt des net use mit PUSHD und POPD zu arbeiten. Dies macht auch Sinn, allerdings hatte ich zu dem Zeitpunkt schon alles soweit fertig, dass es keine Probleme mit net use mehr gab, deshalb habe ich es nicht geändert.
01.
cls 
02.
@echo off 
03.
rem lw vorab auf default K: setzen 
04.
set lw="K:" 
05.
echo Der aktuell ausgewaehlte Laufwerksbuchstabe ist %lw%. Falls Sie ihn aendern     moechten geben Sie bitte einen neuen Laufwerksbuchstaben an. 
06.
set /p lw="Bitte freien Laufwerksbuchstaben angeben (K:): " 
07.
net use %lw% \\WWW-HGR\BDR\BDR-Benutzer\Ausbildung\automatischeUpdateswoechentlich\Update-Skripte 
08.
echo		Updates 
09.
echo		======= 
10.
echo. 
11.
echo	[1] Alle Updates 
12.
echo	[2] Einzelne Updates 
13.
echo	[3] Alle Updates mit Herunterfahren 
14.
echo	[4] Alle Updates mit Neustarten 
15.
 
16.
set asw=0 
17.
set /p asw="Bitte Auswahl eingeben (Bsp.: 2): " 
18.
 
19.
if %asw%==1 set name=1234567 & set "num=-1" & goto LOOP 
20.
if %asw%==2 goto DIV 
21.
if %asw%==3 set name=12345679 & set "num=-1" & goto LOOP 
22.
if %asw%==4 set name=12345678 & set "num=-1" & goto LOOP 
23.
 
24.
:DIV 
25.
echo. 
26.
echo	[1] Java 
27.
echo	[2] Flash Player Active X 
28.
echo	[3] Flash Player Plug-In 
29.
echo	[4] Shockwave 
30.
echo	[5] Firefox 
31.
echo	[6] Reader 
32.
echo	[7] Microsoft Windows Defender 
33.
echo	[8] Neustart (nur als letzte Ziffer!!!) 
34.
echo	[9] Herunterfahren (nur als letzte Ziffer!!!) 
35.
echo. 
36.
set name=0 
37.
set /p name="Bitte alle zu aktualisierenden Programme angeben (Bsp.: 134):" 
38.
 
39.
 
40.
set "num=-1"  
41.
:loop  
42.
set /a num=num+1  
43.
 
44.
call set "name2=%%name:~%num%,1%%"  
45.
echo "%name2%"   
46.
if "%name2%"=="" goto END 
47.
if %name2%==1 call "%lw%\Java.bat" 
48.
if %name2%==2 call "%lw%\FlashX.bat" 
49.
if %name2%==3 call "%lw%\FlashPlug.bat" 
50.
if %name2%==4 call "%lw%\shockwave.bat" 
51.
if %name2%==5 call "%lw%\Firefox.bat" 
52.
if %name2%==6 call "%lw%\adobereader.bat" 
53.
if %name2%==7 call "%lw%\msdefender.bat" 
54.
if %name2%==8 shutdown -r -t 0 
55.
if %name2%==9 shutdown -c -t 0 
56.
goto LOOP  
57.
58.
goto END 
59.
 
60.
:END 
61.
net use %lw% /d 
62.
echo Druecken Sie eine beliebige Taste zum Beenden des Programmes. 
63.
pause
Mitglied: nikoatit
12.03.2013 um 10:17 Uhr
Moin,

vielen Dank für deine Mühe und die Veröffentlichung deiner Arbeit!
Allerdings finde ich etwas fummelig rein über Batch und würde eher ein Programm wie WPKG dafür empfehlen.

Gruß
Bitte warten ..
Mitglied: Noobstar0815
12.03.2013 um 11:54 Uhr
Naja, ich bin Azubi im 1. Lehrjahr :D Das heißt für mich war es so ganz gut, da ich so etwas gelernt habe :D
Bitte warten ..
Mitglied: nikoatit
12.03.2013 um 15:05 Uhr
Ist auch nicht verkehrt, besonders wenn du später vielleicht etwas mehr richtung Skripting und/oder Deployment gehen willst.
Die meisten Softwareverteilungsprogramme setzen ja auf (Win-)Batch auf.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...