Nickname
Passwort | vergessen?

305 anonyme User

4 angemeldete Mitglieder


Iceman75
maretz
siriusXT
Iceman75maretzsiriusXTu0206084
65556 Mitglieder freuen sich auf Dich!
Top-Aktivitäten
Sehen Sie hier, wer zu den aktivsten Mitgliedern der letzten Woche zählt:
Sponsored Links
In den Bereich Batch & Shell wechseln ..

Vorbereiten eines Schulungsraumes mittels Batch Dateien

Mitglied: Larz
Geschrieben von Larz (Level 2 - Administrator in Ausbildung)
Erstellt am 20.10.2009, um 14:34:54 Uhr, Permanent-ID: 127539
Dieser Beitrag wurde bisher 5501 mal aufgerufen und gilt als gelöst.
3 von 3 Mitgliedern fanden diese Anleitung hilfreich.
Hilfreich+3 hilfreichDruckenBeobachten
Will man einen Schulungsraum vorbereiten, der mit 10 - 20 PCs ausgestattet ist, kann es durchaus nervig werden, wenn man jeden einzelnen von Hand starten, benötigte Dateien kopieren und danach herunterfahren muss. Ebenso ist es, wenn man nach einer Schulung kleinere Übungs-Dateien o.ä. wieder von jedem einzelnen Rechner löschen muss.
Für diese Zwecke sind nachfolgende Batch-Files gedacht.
Anforderungen:
- Auch der evtl. (PC-)fremde Referent einer Schulung soll damit umgehen können
- es sollen möglichst nur Bordmittel verwendet werden

Voraussetzungen:
- Die Rechner und Netzwerkkarten müssen Wake-On-Lan können.
- das Programm wol.exe (zur Steuerung Wake-On-Lan)
- auf allen Schulungsrechnern existiert das Verzeichnis C:\Schulungsdaten
- Alle unten genannten Dateien sind im selben Verzeichnis, hier: C:\Schulungsraum

Bestandteile
Allgemeine Files:
- Allgemeine_Einstellungen.bat --> Hier werden z.B. Variablen für Umlaute und die Farben bestimmt
- Computernamen_Schulungsraum.txt --> eine Liste in der die Namen aller Schulungsrechner aufgeführt ist
- Mac-Adressen_Schulungsraum.txt --> wie oben, nur eben mit allen Mac-Adressen
- variablen.ini --> da mehrere Batch-Dateien die selben Variablen brauchen, hab ich mir die einfach in eine zentrale Datei geschrieben
- wol.exe --> Zum "aufwecken" der PCs (muss heruntergeladen werden)

Die "Anwendungen":
- Schulungsrechner_Erreichbarkeit_pruefen.bat --> Pingt die Rechner nacheinander an und zeigt dies dem Benutzer an
- Schulungsrechner_herunterfahren.bat --> Klar, um die Rechner alle nach der Schulung wieder herunterzufahren (falls es doch mal einer nicht gemacht hat face-wink)
- Schulungsrechner_starten.bat --> das Gegenstück zu oben - alle gleichzeitig starten
- Schulungsrechner_Daten_kopieren.bat


So, jetzt aber zum Quelltext:

Allgemeine_Einstellungen.bat
01.
REM Hier werden Variablen für die Umlaute definiert, damit Sie nachher im Text richtig angezeigt werden (ANSI/ASCI-Problem) 
02.
chcp 1252>nul 
03.
set ue=ü 
04.
set ae=ä 
05.
set oe=ö 
06.
set Uue=Ü 
07.
set Aae=Ä 
08.
set Ooe=Ö 
09.
set ss=ß 
10.
chcp 850>nul 
11.
 
12.
REM Hier wird die Farbe der Fenster bestimmt 
13.
COLOR 0E 
14.
 
15.
REM Und nun noch vor dem jeweiligen  "Programmstart" sauber putzen... 
16.
CLS


Variablen.ini
Hier stehen wirklich nur die Variablen drin, also alles was nach dem set-Befehl kommt.
Hier dürfen auch keine REMs oder ECHOs drin sein, weil jede Zeile in einer Schleife aufgerufen wird
01.
Computernamen=C:\Schulungsraum\Computernamen_Schulungsraum.txt 
02.
Mac-Adressen=C:\Schulungsraum\Mac-Adressen_Schulungsraum.txt 
03.
DatenFuerSchueler=C:\Schulungsraum\Daten_fuer_Schueler 
04.
WOL=C:\Schulungsraum\woL.exe


Computernamen_Schulungsraum.txt
PCName1
PCName2
PCName3
PCName4


Mac-Adressen_Schulungsraum.txt
Hier unbedingt darauf achten dass die Adressen ohne Trennzeichen sind

001E37411234
001E37411234
001E37411234
001E37411234


Schulungsraum_Erreichbarkeit_pruefen.bat
01.
@ECHO OFF & SETLOCAL 
02.
REM hier erfolgt erstmal die Verarbeitung der allgemeinen Einstellungen  
03.
call C:\Schulungsraum\Allgemeine_Einstellungen.bat 
04.
 
05.
REM Variablen einlesen 
06.
for /f %%i in (C:\Schulungsraum\variablen.ini) do set %%i 
07.
 
08.
:DoAction 
09.
REM Jetzt geht's los - für jeden Eintrag in der Liste der Computernamen ... 
10.
for /f %%i in (%Computernamen%) do ( 
11.
cls 
12.
@echo ------------------------------------------------------------------- 
13.
@echo Computer werden angepingt... 
14.
@echo ------------------------------------------------------------------- 
15.
REM ...wird der jeweilige PC genau einmal angepingt und 50 ms auf eine Antwort gewartet 
16.
ping %%i -n 1 -w 50 
17.
@echo ------------------------------------------------------------------- 
18.
@echo                       Abbruch mit Strg + C 
19.
@echo ------------------------------------------------------------------- 
20.
REM Der nachfolgende Ping auf localhost bewirkt lediglich, dass die Antwort des Rechners noch eine Weile stehen bleibt  
21.
ping localhost -n 2 >nul 
22.
23.
@echo off  
24.
REM Und hiermit geht's zurück zum Anfang... 
25.
goto DoAction


Schulungsrechner_herunterfahren.bat
01.
REM Hiermit werden die Schulungsrechner heruntergefahren 
02.
 
03.
@ECHO OFF & SETLOCAL  
04.
REM hier erfolgt wieder zunächst die Verarbeitung der allgemeinen Einstellungen  
05.
call C:\Schulungsraum\Allgemeine_Einstellungen.bat 
06.
 
07.
REM Variablen einlesen 
08.
for /f %%i in (C:\Schulungsraum\variablen.ini) do set %%i 
09.
 
10.
:DoAction 
11.
@echo. 
12.
@echo --------------------------------------------------------- 
13.
@echo Hierdurch werden alle Schulungsrechner heruntergefahren  
14.
@echo und ausgeschaltet. 
15.
@echo --------------------------------------------------------- 
16.
REM ZUr Sicherheit nochmal eine Nachfrage, ob man wirklich alle PCs herunterfahren will 
17.
@echo M%oe%chten Sie ALLE Schulungsrechner herunterfahren? 
18.
set /p JaOderNein=Ungesicherte Daten k%oe%nnen verloren gehen (J/N): 
19.
if /i '%JaOderNein:~0,1%' == 'j' goto :Shutdown 
20.
REM Wird nein (bzw. nicht ja) eingegeben, wird die Verarbeitung der Batch abgebrochen 
21.
@echo --------------------------------------------------------- 
22.
@echo  Schulungsrechner werden nicht heruntergefahren, beende 
23.
@echo --------------------------------------------------------- 
24.
REM Und wieder zum Lesen das Fenster ein bischen offen gelassen 
25.
ping localhost -n 3 >nul 
26.
exit 
27.
 
28.
:Shutdown 
29.
@echo. 
30.
@echo --------------------------------------------------------- 
31.
@echo        Schulungsrechner werden heruntergefahren 
32.
@echo --------------------------------------------------------- 
33.
echo on 
34.
REM Wird "Ja" gewählt, wird der Rechner mit einem entsprechenden Hinweis an den davor Sitzenden heruntergefahren 
35.
for /f %%i in (%Computernamen%) do shutdown -s -t 30 -c "Der Computer wird vom Seminarleiter heruntergefahren" -f -m \\%%i 
36.
ping localhost -n 3 >nul


Schulungsrechner_starten.bat
01.
REM Hiermit werden die Schulungsrechner gestartet 
02.
 
03.
@ECHO OFF & SETLOCAL  
04.
REM Und wieder...  
05.
call C:\Schulungsraum\Allgemeine_Einstellungen.bat 
06.
 
07.
REM Variablen einlesen 
08.
for /f %%i in (C:\Schulungsraum\variablen.ini) do set %%i 
09.
 
10.
:DoAction 
11.
@echo ---------------------------------------------------------------- 
12.
@echo               Schulungsrechner werden gestartet 
13.
@echo ---------------------------------------------------------------- 
14.
REM Hier wird in einer Schleife jede Mac-Adresse aus der Datei Mac-Adressen_Schulungsraum.txt ausgelesen und der Rechner mit Wake-on-LAN gestartet 
15.
for /f %%i in (%Mac-Adressen%) do %wol% %%i 
16.
@echo. 
17.
@echo ---------------------------------------------------------------- 
18.
@echo                  Startbefehl wurden gesendet 
19.
@echo ---------------------------------------------------------------- 
20.
REM Und wieder zur besseren Lesbarkeit: 
21.
ping localhost >nul

zu guter letzt

Schulungsrechnern_Daten_kopieren.bat
Wir wollen ja auch Daten für die Schüler bereitstellen. Dafür gibt es einen speziellen Ordner in den der Referent seine Dateien legt und diese dann mit folgender Batch aus alle Schulungsrechner kopiert. Ich gehe hier von kleineren Übungsdateien für Excel oder Word aus, nicht von komplexen Installationsdateien die an spezielle Stellen geschoben werden müssen:
01.
@ECHO OFF & SETLOCAL  
02.
REM Und auch hier zum Schluss nochmal die allgemeinen Einstelungen laden: 
03.
call C:\Schulungsraum\Allgemeine_Einstellungen.bat 
04.
 
05.
REM Variablen einlesen 
06.
for /f %%i in (C:\Schulungsraum\variablen.ini) do set %%i 
07.
 
08.
:DoAction 
09.
@echo ----------------------------------------------------------------- 
10.
@echo Hiermit werden Alle Dateien aus dem Verzeichnis  
11.
@echo %DatenFuerSchueler%  
12.
@echo auf die Schulungsrechner kopiert. Eventuell vorhandene Dateien 
13.
@echo werden dabei %ue%berschrieben 
14.
@echo ----------------------------------------------------------------- 
15.
@echo. 
16.
 
17.
REM Man kann mit diesem Script die Schüler-Verzeichnisse auch gleich wieder sauber machen, deshalb hier die Abfrage, ob kopiert oder gelöscht werden soll 
18.
set /p WasWillstDuTun=M%oe%chten Sie neue Dateien (k)opieren oder alte Daten (l)%oe%schen? 
19.
if '%WasWillstDuTun%' == 'k' goto Kopieren 
20.
if '%WasWillstDuTun%' == 'l' goto Loeschen 
21.
exit 
22.
 
23.
:Kopieren 
24.
@echo ----------------------------------------------------------------- 
25.
@echo Daten von %DatenFuerSchueler% werden kopiert 
26.
@echo ----------------------------------------------------------------- 
27.
REM Beim Kopieren wird eine Schleife ausgeführt die auf jeden in der Datei Computernamen_Schulungsraum.txt stehenden Rechner Die Dateien vom Referenten-PC kopiert 
28.
for /f %%i in (%Computernamen%) do xcopy "%DatenFuerSchueler%\*.*" "\\%%i\c$\Schulungsdaten\" /y 
29.
@echo ----------------------------------------------------------------- 
30.
@echo Daten wurden auf alle eingeschalteten Schulungsrechner kopiert 
31.
@echo ----------------------------------------------------------------- 
32.
pause 
33.
exit 
34.
 
35.
:Loeschen 
36.
@echo ----------------------------------------------------------------- 
37.
@echo Daten der Schulungsrechner werden gel%oe%scht 
38.
@echo ----------------------------------------------------------------- 
39.
REM Beim löschen wird die Schleife auf jedem in der Datei stehendem PC die Dateien im Verzeichnis löschen 
40.
for /f %%i in (%Computernamen%) do del \\%%i\c$\Schulungsdaten\*.* /s /q 
41.
@echo ----------------------------------------------------------------- 
42.
@echo Daten wurden auf alle eingeschalteten Schulungsrechnern gel%oe%scht 
43.
@echo ----------------------------------------------------------------- 
44.
ping localhost -n 5 >nul 
45.
exit 
46.
 


So, das war einiges in vielen Dateien und mit vielen Variablen. Ich hoffe es ist dennoch ausreichend erklärt und hilft vielleicht (auch nur in Auszügen) dem einen oder anderen mal was.

Gruß
Larz
Melden Sie sich mit Ihrem Nicknamen an, um diesen Beitrag zu bewerten!
Kommentar schreibenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
Diskussionsverlauf (5 Kommentare) Thread-Ansicht
thread
ITIL-Harry
Kommentar ITIL-Harry schreibt am 22.10.2009, 15:06:45 Uhr
Batches soweit klar, ich würde das aber anders triggern, da ich denke, dass eine lokale Ausführung immer besser ist als eine Übertragung übers Netzwerk

Ich würde die Dateien lokal auf jedem Computer ablegen, die beim Start von einer Batch aufgerufen werden. Die Batch als Startskript führt die Aktionen
nur dann durch, wenn eine Flagdatei vorhanden ist. Das Startskript löscht die Flagdatei am Ende der Durchführung.

Die Flagdatei kopiert man nach Aufwecken des (der) PC(s) auf den C$-Share, auf den man ja übers Netz als Admin zugreifen kann.
Das Verteilen der Flagdatei kann ja noch mit einer Batch am Adminplatz automatisieren.

Wenn jetzt der Schulungsteilnehmer den Rechner einschaltet wird erstmal bereinigt, wenn die Flagdatei vorhanden ist. ansonsten wird die
das Startskript zwar aufgerufen, führt aber keine Aktionen durch.

Gruß
ITIL-Harry
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
TimoBeil
Kommentar TimoBeil schreibt am 24.10.2009, 20:04:35 Uhr
Servus Harry,

das war doch keine Frage, sondern ein Tipp...

Larz fehlte wohl nur noch etwas Zeit - um da weiterzuschreiben.


Gruß
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
ITIL-Harry
Kommentar ITIL-Harry schreibt am 25.10.2009, 00:27:20 Uhr
OK - Sorry - hab meinen Kommentar umgeschrieben, jetzt ist es ein Ergäzungsvorschlag
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Biber
Kommentar Biber schreibt am 24.10.2009, 23:55:44 Uhr
Hallo Larz,

danke für das Posten dieses Tipps hier in "Batch & Shell".

Einen Tipp zum Tipp hätte ich noch.
Du schreibst:
Variablen.ini
Hier stehen wirklich nur die Variablen drin, also alles was nach dem set-Befehl kommt.
Hier dürfen auch keine REMs oder ECHOs drin sein, weil jede Zeile in einer Schleife aufgerufen wird
Gerade weil ich auch selbst die Schwierigkeiten kenne, ein von anderen Codern erstelltes Skript nachvollziehen zu wollen (oder auch ein von mir geschriebenes nach ein paar Monaten verstehen zu wollen), deshalb halte ich Kommentare für dringend anzuraten.
Eigentlich sogar für ein Merkmal von Codequalität, auch wenn das sicherlich keine Vokabel ist, die nun im Batch-Bereich üblich ist.

Jedenfalls haben auch die RedmonderInnen unterstellt,
  • Text-, Ini- und Parameterdateien werden Kommentarzeilen enthalten
  • und diese werden im Batch mit FOR/F-Anweisungen aus- bzw. eingelesen.

Die Hilfe zu FOR deutet das auch irgendwie an:
01.
FOR /? 
02.
... 
03.
    wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese 
04.
    Schlüsselwörter sind: 
05.
 
06.
        eol=c           - Gibt das Zeichen für Zeilenendekommentare an 
07.
                          (nur eins). 
08.
.... 
09.
    Einige Beispiele: 
10.
 
11.
FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k 
12.
 
13.
    Dadurch wird jede Zeile in der Datei Datei.txt ausgewertet, Zeilen die 
14.
    mit einem Semikolon beginnen werden ignoriert, für den 2. und 3. Token 
15.
    ...

Das bedeutet, um die zugehörigen Parameter-Dateien etwas wartbarer und verständlicher zu machen sind Kommentarzeilen durchaus möglich.
(Richtig ist natürlich: REM- oder ECHO Zeilen sind nicht möglich.)

Untergegangen in der M$-Hilfe ist:
als Default für Kommentarzeilen hast du ohnehin das ";" (Semikolon) immer eingestellt, auch ohne EOL zu erwähnen.
Beispiel/Demo
01.
D:\temp>type d:\temp\variablen.ini 
02.
; Die Datei Computernamen.txt MUSS im angegebenen Pfad existieren 
03.
Computernamen=C:\Schulungsraum\Computernamen_Schulungsraum.txt 
04.
; Die Mac-Adressendatei MUSS im angegebenen Pfad existieren 
05.
Mac-Adressen=C:\Schulungsraum\Mac-Adressen_Schulungsraum.txt 
06.
; Daten der Schüler ... Verzeichnis wird bei Bedarf angelegt 
07.
DatenFuerSchueler=C:\Schulungsraum\Daten_fuer_Schueler 
08.
WOL=C:\Schulungsraum\woL.exe 
09.
 
10.
D:\temp>for /f %i in (d:\temp\variablen.ini) do @echo set %i 
11.
set Computernamen=C:\Schulungsraum\Computernamen_Schulungsraum.txt 
12.
set Mac-Adressen=C:\Schulungsraum\Mac-Adressen_Schulungsraum.txt 
13.
set DatenFuerSchueler=C:\Schulungsraum\Daten_fuer_Schueler 
14.
set WOL=C:\Schulungsraum\woL.exe

Grüße
Biber
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
thread
Larz
Kommentar Larz schreibt am 26.10.2009, 11:51:57 Uhr
Hoi Biber,

danke für die Ergänzung. Das mit dem Semikolon habe ich da wohl überlesen... ist so natürlich viel praktischer, da nachvollziehbar....

Gruß
Larz
AntwortenMit Zitat
Anmeldung erforderlich!
Bitte melden Sie sich erst mit Ihrem Nicknamen und Passwort an.
Aktuelle Anleitungen
Mögliche Antworten oder verwandte Beiträge
Anleitungen zum Thema
Links zum Thema