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

Kopieren eines Ordners auf bestimmte Rechner - Namen der Rechner aus Datei auslesen

Anleitung Entwicklung Batch & Shell

Mitglied: DonSm00chY

DonSm00chY (Level 1) - Jetzt verbinden

15.03.2007, aktualisiert 18.10.2012, 18477 Aufrufe, 4 Kommentare

Im Rahmen eines Projektes zur Sicherung bestimmter Server mittels NTBackup galt es auch, auf einfache Art und Weise das letztendlich auszuführende Backup-Script auf diese Server zu kopieren.



Problemstellung


Folgendes Problem galt es zu lösen: Der Ordner sollte auf bestimmte Rechner kopiert werden. Ebenso auf eine jeweils definierte Partition. Da für mich der händische Aufwand zu hoch gewesen wäre, sollte es über ein Script realisiert werden.

Zudem musste auf den Servern noch eine bestimmte Ordner-Struktur erzeugt werden, die für das eigentliche Backup-Script benötigt wird. Erschwerend kommt hinzu, dass Server mit englischem und deutschem Betriebssystem verwendet werden, sich also die Pfade unterscheiden (Dokumente und Einstellungen -> Documents and Settings). Dieser Teil gehört eigentlich nicht unbedingt mit dazu, ich lass ihn aber trotzdem als kleinen Denkanstoß drinne, falls jemand mal vor so einem Problem steht.


Voraussetzungen


Grundlage zum Kopieren ist Robocopy. Dieses, normalerweise im Microsoft® Windows® Server 2003 Resource Kit enthaltene Tool übertrifft das schon bekannte copy bzw. xcopy im Funktionsumfang um Welten. Damit nicht das komplette Paket heruntergeladen und installiert werden muss, habe ich das Tool nochmal hier inklusive der Dokumentation hochgeladen.


Dreh- und Angelpunkt: Die Hosts.txt


Dreh- und Angelpunkt des Ganzen ist die Host.txt. In dieser müssen folgende Angaben gemacht werden:

  1. Hostname des Rechners, auf den der Ordner kopiert werden soll
  2. Partition, auf die der Ordner kopiert werden soll
  3. Sprache des Betriebssystems

Die Spalten werden mit einem beliebigen Trennzeichen versehen, in meinem Fall dem Semikolon (#). Ausschauen tut das Ganze dann so:

01.
:: *********************************************** 
02.
:: * Configfile fuer NTBackup-Script             * 
03.
:: * Aufbau:                                     * 
04.
:: * A#B#C                                       * 
05.
:: * A = Hostname                                * 
06.
:: * B = lokales Backuplaufwerk (OHNE ":" !!!)   * 
07.
:: * C = Sprachversion des Betriebssystems       * 
08.
:: * Genaue Beschreibungen siehe Dokumentation!  * 
09.
:: *********************************************** 
10.
HOSTNAME1#D#DE 
11.
HOSTNAME2#T#EN 
12.
HOSTNAME3#G#EN
Natürlich lässt sich die Liste beliebig ergänzen. Dabei ist zu beachten, dass die Hostnamen konsequenterweise immer groß, oder klein geschrieben werden sollten. Der späteren Einfachheit halber.


Was hinter den Kulissen passieren soll


Der Prozess, der ablaufen soll ist folgender:

  1. Es werden alle Hostnamen aus der Hosts.txt ausgelesen und in einem kleinen Menü dargestellt
  2. Aus diesem Menü kann der Benutzer auswählen, ob er den Ordner Backup
    • Auf alle Server kopieren will
    • Auf einen einzelnen Server kopieren will
    • Sich nur verklickt hat und lieber abbrechen will.
  3. Je nach Auswahl des Users werden verschiedene Unterroutinen aufgerufen bei denen
    • Der Ordner nur auf den einen Server kopiert wird
    • Der Ordner auf alle Hosts der Hosts.txt kopiert wird
    • Abgebrochen wird, weil der User einen in der Hosts.txt nicht vorhandenen Namen eingegeben bzw. sich für den Abbruch entschieden hat
  4. Danach wird mittels Robocopy versucht den Ordner Backup auf den entsprechenden Server und die entsprechende Partition zu kopieren
  5. Im Anschluss wird überprüft, ob der Ordner und die darin enthaltene Backup.cmd vorhanden sind
  6. Für die Auswahl des Users und den Status der folgenden Operationen wird eine Log-Datei angefertigt, die sich nach Abschluss öffnet und dem User anzeigt, auf welche Servern der Ordner erfolgreich kopiert wurde, und bei welchen es möglicherweise Probleme gab


Das Script im Einzelnen


Ich werde erstmal jeden Code-Komplex einzeln durchgehen und erläutern, am Ende wird dann das Script im Ganzen stehen. Es sind zudem noch mal Erklärungen im Script selber untergebracht, die erstmal ausgelassen werden, aber im kompletten Script dann natürlich enthalten sind.


Das Menü


Das Menü, in dem alle in der Hosts.txt eingetragenen Server aufgeschlüsselt werden, wird mittels einer einfachen For-Schleife realisiert, bei der nur die erste Spalte abgefragt wird. Die Auswahl des Users wird mittels set /p in der Variable Choice gespeichert und im folgenden Teil ausgewertet werden. Zudem wie bereits erwähnt wird die Log_Datei geschrieben.

01.
@ECHO Auf welche Rechner soll das Script kopiert werden? 
02.
@ECHO. 
03.
@ECHO. 
04.
@ECHO [ALLE] - Auf alle untenstehende Server 
05.
@ECHO. 
06.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
07.
	ECHO [%%a] - Nur auf %%a 
08.
09.
@ECHO. 
10.
@ECHO [KEINEN] - bricht den Vorgang ab 
11.
@ECHO. 
12.
 
13.
set /p Choice=Bitte den "HOSTNAMEN", "ALLE" oder "KEINEN" eingeben (GROSSSCHREIBUNG beachten!): 
14.
 
15.
@ECHO Vom Benutzer getroffene Choice: %Choice% > Install_Log.txt 
16.
@ECHO. >> Install_Log.txt
d244daddb0b228582c57f7d9238e8dbe-menue - Klicke auf das Bild, um es zu vergrößern

Die Auswertung der Usereingabe


Als nächstes folgt die Auswertung der Eingabe des Users. Dabei wird die Variable InstalledSuccessfully auf den Initialwert 0 gesetzt.

01.
set InstalledSuccessfully=0 
02.
IF %Choice% == ALLE ( 
03.
   GOTO AllServers 
04.
) ELSE IF %Choice% == KEINEN ( 
05.
   GOTO NoneServers 
06.
) ELSE ( 
07.
       for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
08.
                    IF %Choice% == %%a ( 
09.
                        GOTO SingleServer 
10.
                    )        
11.
12.
      	GOTO Error 
13.
)
Bis zum ELSE-Zweig dürfte es soweit keine Nachfragen geben. In dem Zweig allerdings passiert folgendes: Es findet ein Abgleich der Eingabe mit den vorhandenen Hostnamen in der Hosts.txt statt. Stimmt die Eingabe mit Einem überein, wird zur Sprungmarke SingleServer gesprungen. Stimmt die Eingabe mit keinem der Hostnamen überein wird die For-Schleife verlassen und zur Sprungmarke Error gesprungen.


Der weitere Verlauf für einen einzelnen Server

Das Kopieren auf den Server

Nun folgt das Kopieren des Ordners auf den einzelnen Server.

01.
:SingleServer 
02.
for /f "tokens=1,2,4 delims=#" %%a in ('findstr %Choice% Hosts.txt') do ( 
03.
robocopy backup \%Choice%\%%b$ackup /E /R:0 /W:1 
04.
 
05.
	IF %%c==de ( 
06.
		md "\%Choice%c$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupData" 
07.
		md "\%Choice%c$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupTemp" 
08.
	) ELSE IF %%c==en ( 
09.
		md "\%Choice%c$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupData" 
10.
		md "\%Choice%c$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupTemp" 
11.
12.
13.
GOTO QuerySingleServer
Da wir dabei noch den ausgesuchte Partition und Sprache des Betriebssystems abfragen müssen, geschieht die ganze Operation wieder mit einer For-Schleife. Dazu suchen wir uns mittels findstr %Choice% Hosts.txt zuerst die gebrauchte Zeile aus der Hosts.txt. Anschließend wird versucht den Ordner Backup auf den Server zu kopieren. Was die Slash-Befehle im Einzelnen bedeuten lässt sich in der Doku nachlesen (Link siehe Voraussetzungen).
Zudem wird in der Hosts.txt die Sprachversion abgefragt und je nach Sprache die entsprechenden Ordnerstrukturen erzeugt.


Abfrage, ob das Kopieren erfolgreich war

Man kann nicht immer davon ausgehen, dass das Kopieren erfolgreich war, deshalb muss eine kleine Abfrage stattfinden. Dies geschieht damit, dass man einfach nachschaut, ob die Backup.cmd auf dem Server vorhanden ist:

01.
:QuerySingleServer 
02.
for /f "tokens=1,2 delims=# skip=12" %%a in (Hosts.txt) do ( 
03.
	IF EXIST \%Choice%\%%b$BackupBackup.cmd ( 
04.
		SET InstalledSuccessfully=1 
05.
	)  
06.
07.
GOTO EchoStatus
Ist dies der Fall, wird die Variable InstalledSuccessfully auf 1 gesetzt. Als nächstes wird der Wert der Variable überprüft:

01.
:EchoStatus 
02.
IF %InstalledSuccessfully% == 1 ( 
03.
	@ECHO Backupscript erfolgreich auf %Choice% kopiert >> Install_Log.txt 
04.
	@ECHO Backupscript erfolgreich auf %Choice% kopiert. 
05.
	) ELSE ( 
06.
	@ECHO Backupscript konnte nicht erfolgreich auf %Choice% kopiert werden! >> Install_Log.txt 
07.
	@ECHO Backupscript konnte nicht erfolgreich auf %Choice% kopiert werden! 
08.
09.
GOTO EndOfFile
Sollte das Kopieren erfolgreich verlaufen und somit die Variable auf 1 gesetzt sein, wird dies als Meldung zurückgegeben, ansonsten wird eine Meldung ausgegeben, dass das Kopieren nicht erfolgreich war. (Aufbauend darauf, dass am Anfang des Scripts der Wert für die Variable auf 0 gesetzt wurde).
Damit ist der Durchgang für das Kopieren auf einen einzelnen Server beendet. Es wird noch die Log-Datei geöffnet, damit der User nachschauen kann, wie die Installation verlief. Nach dem Schließen dieser wird das Script beendet.


Der weitere Verlauf falls alle Server ausgewählt worden

Das Kopieren auf die Server

Der Kopiervorgang unterscheidet sich nur minimal von dem beim einzelnen Server, es werden einfach alle Hosts abgeklappert und versucht auf diese den Ordner zu kopieren.

01.
:AllServers 
02.
for /f "tokens=1,2,4 delims=# skip=12" %%a in (Hosts.txt) do ( 
03.
	robocopy backup \%%a\%%b$ackup /E /W:5 /R:0 > Install_Log_%%a.txt 
04.
 
05.
	IF %%c==de ( 
06.
		md "\%%ac$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupData" 
07.
		md "\%%ac$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupTemp" 
08.
	) ELSE IF %%c==en ( 
09.
		md "\%%ac$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupData" 
10.
		md "\%%ac$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupTemp" 
11.
	)	 
12.
13.
GOTO CheckForSuccessAll
Ebenso wird wieder die Ordnerstruktur angelegt, falls diese noch nicht vorhanden sein sollte.
In einem Punkt unterscheidet sich die Installation: Es wird für jeden Rechner eine einzelne, temporäre Log-Datei angelegt, in die Robocopy den Status – ob erfolgreich oder nicht – vermerkt. Bei einem nicht erfolgreichen Kopieren steht in diesen Logs eine markante Zeichenkette, die im nächsten Schritt abgefragt wird:

01.
:CheckForSuccessAll 
02.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
03.
	for /f %%b in ('findstr /C:"Accessing Destination Directory" Install_Log_%%a.txt') do ( 
04.
		@ECHO Backupscript konnte nicht erfolgreich auf %%a kopiert werden! >> Install_Log.txt 
05.
		@ECHO Backupscript konnte nicht erfolgreich auf %%a kopiert werden! 
06.
		del Install_Log_%%a.txt /Q 
07.
08.
)
Sollte diese vorhanden sein, wird ausgegeben, dass das Kopieren Schiefgelaufen ist, gleichzeitig wird die temporäre Log für diesen Server gelöscht. Dies geht nun solange, bis in keiner temporären Log mehr diese Zeichenkette zu finden ist. Danach werden die restlichen temporären Logs abgeklappert und die Meldung, dass das Kopieren erfolgreich verlief ausgegeben:

01.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
02.
	IF EXIST Install_Log_%%a.txt ( 
03.
		@ECHO Backupscript erfolgreich auf %%a kopiert >> Install_Log.txt 
04.
		@ECHO Backupscript erfolgreich auf %%a kopiert. 
05.
	del Install_Log_%%a.txt /Q 
06.
07.
08.
goto EndOfFile
Durch diese Prozedur wird sichergestellt, dass es nicht heißt "Kopieren bei allen Servern erfolgreich bzw. bei allen fehlgeschlagen", sondern für jeden Server individuell das Ganze geprüft wird.
Abschließend wird wieder die "richtige" Log-Datei geöffnet, die zum Beispiel dann so aussehen kann:

01.
Vom Benutzer getroffene Auswahl: ALLE  
02.
  
03.
Backupscript konnte nicht erfolgreich auf HOSTNAME1 kopiert werden! 
04.
Backupscript konnte nicht erfolgreich auf HOSTNAME2 kopiert werden! 
05.
Backupscript erfolgreich auf HOSTNAME3 kopiert
Damit wäre der Vorgang abgeschlossen, wenn alles geklappt hat, hat man nun mit 1 Mausklick und 5 Buchstaben einen Ordner auf x verschiedene Rechner kopiert. Natürlich kann man das Script noch ausweiten.


Das Script im Ganzen


Zum Abschluss nun noch mal das Script hintereinanderweg:

01.
@echo off 
02.
cls 
03.
@title Installscript fuer NTBackup-Script © Andre F. 
04.
::********************************************** 
05.
::* Installscript fuer NTBackup-Script (v 4.0) * 
06.
::*                  Andre F.                  * 
07.
::********************************************** 
08.
 
09.
 
10.
:: *********************************** 
11.
:: ******          GUI          ****** 
12.
:: *********************************** 
13.
:: *---------------------------------* 
14.
:: *********************************** 
15.
:: * Erklaerung:                     * 
16.
:: * Auflistung der in der Hosts.txt * 
17.
:: * eingetragenen Rechner und die   * 
18.
:: * Benutzerabfrage                 * 
19.
:: *********************************** 
20.
 
21.
@ECHO Auf welche Rechner soll das Script kopiert werden? 
22.
@ECHO. 
23.
@ECHO. 
24.
@ECHO [ALLE] - Auf alle untenstehende Server 
25.
@ECHO. 
26.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
27.
	ECHO [%%a] - Nur auf %%a 
28.
29.
@ECHO. 
30.
@ECHO [KEINEN] - bricht den Vorgang ab 
31.
@ECHO. 
32.
 
33.
set /p Choice=Bitte den "HOSTNAMEN", "ALLE" oder "KEINEN" eingeben (GROSSSCHREIBUNG beachten!): 
34.
 
35.
@ECHO Vom Benutzer getroffene Auswahl: %Choice% > Install_Log.txt 
36.
@ECHO. >> Install_Log.txt 
37.
 
38.
 
39.
:: ***************************************** 
40.
:: ******           Auswahl           ****** 
41.
:: ***************************************** 
42.
:: *---------------------------------------* 
43.
:: ***************************************** 
44.
:: * Erklaerung:                           * 
45.
:: * Anhand der Eingabe des Users wird     * 
46.
:: * entschieden, welche Abarbeitung folgt * 
47.
:: ***************************************** 
48.
 
49.
set InstalledSuccessfully=0 
50.
IF %Choice% == ALLE ( 
51.
   GOTO AllServers 
52.
) ELSE IF %Choice% == KEINEN ( 
53.
   GOTO NoneServers 
54.
) ELSE ( 
55.
       for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
56.
                    IF %Choice% == %%a ( 
57.
                        GOTO SingleServer 
58.
                    )        
59.
60.
      	GOTO Error 
61.
62.
 
63.
 
64.
:: ****************************************** 
65.
:: ******      Einzelner Server        ****** 
66.
:: ****************************************** 
67.
:: *----------------------------------------* 
68.
:: ****************************************** 
69.
:: * Erklaerung:                            * 
70.
:: * Bei der Eingabe eines einzelnen        * 
71.
:: * Hostnamen wird dieser Teil ausgefuehrt * 
72.
:: ****************************************** 
73.
 
74.
:SingleServer 
75.
for /f "tokens=1,2,4 delims=#" %%a in ('findstr %Choice% Hosts.txt') do ( 
76.
robocopy backup \%Choice%\%%b$ackup /E /R:0 /W:1 > Install_Log_%Choice%.txt 
77.
 
78.
	IF %%c==de ( 
79.
		md "\%Choice%c$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupData" 
80.
		md "\%Choice%c$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupTemp" 
81.
	) ELSE IF %%c==en ( 
82.
		md "\%Choice%c$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupData" 
83.
		md "\%Choice%c$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupTemp" 
84.
85.
86.
GOTO QuerySingleServer 
87.
 
88.
 
89.
:: ******************************** 
90.
:: ******    Alle Server     ****** 
91.
:: ******************************** 
92.
:: *------------------------------* 
93.
:: ******************************** 
94.
:: * Erklaerung:                  * 
95.
:: * Bei der Eingabe von ALLE     * 
96.
:: * wird dieser Teil ausgefuehrt * 
97.
:: ******************************** 
98.
 
99.
:AllServers 
100.
for /f "tokens=1,2,4 delims=# skip=12" %%a in (Hosts.txt) do ( 
101.
	robocopy backup \%%a\%%b$ackup /E /W:5 /R:0 > Install_Log_%%a.txt 
102.
 
103.
	IF %%c==de ( 
104.
		md "\%%ac$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupData" 
105.
		md "\%%ac$Dokumente und EinstellungenAdministratorLokale EinstellungenAnwendungsdatenMicrosoftWindows NTNTBackupTemp" 
106.
	) ELSE IF %%c==en ( 
107.
		md "\%%ac$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupData" 
108.
		md "\%%ac$Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindows NTNTBackupTemp" 
109.
	)	 
110.
111.
GOTO CheckForSuccessAll 
112.
 
113.
 
114.
:: *********************************** 
115.
:: ******    Statusabfragen     ****** 
116.
:: *********************************** 
117.
:: *---------------------------------* 
118.
:: *********************************** 
119.
:: * Erklaerung:                     * 
120.
:: * Hier erfolgt die Abfrage, ob    * 
121.
:: * ein das Kopieren erfolgreich    * 
122.
:: * war oder nicht.                 * 
123.
:: *********************************** 
124.
 
125.
:QuerySingleServer 
126.
for /f "tokens=1,2 delims=# skip=12" %%a in (Hosts.txt) do ( 
127.
	IF EXIST \%Choice%\%%b$BackupBackup.cmd ( 
128.
		SET InstalledSuccessfully=1 
129.
	)  
130.
131.
GOTO EchoStatus 
132.
 
133.
 
134.
:EchoStatus 
135.
IF %InstalledSuccessfully% == 1 ( 
136.
	@ECHO Backupscript erfolgreich auf %Choice% kopiert >> Install_Log.txt 
137.
	@ECHO Backupscript erfolgreich auf %Choice% kopiert. 
138.
	) ELSE ( 
139.
	@ECHO Backupscript konnte nicht erfolgreich auf %Choice% kopiert werden! >> Install_Log.txt 
140.
	@ECHO Backupscript konnte nicht erfolgreich auf %Choice% kopiert werden! 
141.
142.
del Install_Log_%Choice%.txt /Q 
143.
GOTO EndOfFile 
144.
 
145.
 
146.
:CheckForSuccessAll 
147.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
148.
	for /f %%b in ('findstr /C:"Accessing Destination Directory" Install_Log_%%a.txt') do ( 
149.
		@ECHO Backupscript konnte nicht erfolgreich auf %%a kopiert werden! >> Install_Log.txt 
150.
		@ECHO Backupscript konnte nicht erfolgreich auf %%a kopiert werden! 
151.
::		del Install_Log_%%a.txt /Q 
152.
153.
154.
for /f "tokens=1 delims=# skip=12" %%a in (Hosts.txt) do ( 
155.
	IF EXIST Install_Log_%%a.txt ( 
156.
		@ECHO Backupscript erfolgreich auf %%a kopiert >> Install_Log.txt 
157.
		@ECHO Backupscript erfolgreich auf %%a kopiert. 
158.
::	del Install_Log_%%a.txt /Q 
159.
160.
161.
goto EndOfFile 
162.
 
163.
 
164.
:: ******************************** 
165.
:: ******    Kein Server     ****** 
166.
:: ******************************** 
167.
:: *------------------------------* 
168.
:: ******************************** 
169.
:: * Erklaerung:                  * 
170.
:: * Bei der Eingabe von KEINEN   * 
171.
:: * wird dieser Teil ausgefuehrt * 
172.
:: ******************************** 
173.
 
174.
:NoneServers 
175.
@ECHO Script wurde auf keinen Rechner kopiert. 
176.
@ECHO Script auf keinen Rechner kopiert >> Install_Log.txt 
177.
GOTO EndOfFile 
178.
 
179.
 
180.
:: ********************************* 
181.
:: ******  Falsche Eingabe   ******* 
182.
:: ********************************* 
183.
:: *-------------------------------* 
184.
:: ********************************* 
185.
:: * Erklaerung:                   * 
186.
:: * Bei der fehlerhaften Eingabe  * 
187.
:: * eines Namens wird dieser Teil *  
188.
:: * ausgefuehrt                   * 
189.
:: ********************************* 
190.
 
191.
:Error 
192.
@ECHO Eingegebener Name ist kein gueltiger Hostname! 
193.
@ECHO Eingegebener Name ist kein gueltiger Hostname >> Install_Log.txt 
194.
goto EndOfFile 
195.
 
196.
:EndOfFile 
197.
call Install_Log.txt 
198.
@title %ComSpec%

Abschluss


Ich hoffe, ich konnte einigen mit dieser Anleitung weiterhelfen. Sollten dennoch Fragen offen sein, immer raus damit.

Mit freundlichen Grüßen, smoo
Mitglied: DonSm00chY
15.03.2007 um 15:58 Uhr
Hab das Problem selber lösen können. Fehler steckte mal wieder im Detail, bzw. im benutzen von Copy & Paste.

01.
:rechner 
02.
@ECHO 123 
03.
for /f "tokens=1,2,4 delims=# skip=17" %%a in ('findstr %auswahl% hosts.txt') do ( 
04.
@ECHO 234 
05.
robocopy backup \\%%a\%%b$\backup /E 
06.
 
07.
   IF %%c==de ( 
08.
      md "\\%auswahl%\c$\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\Data" 
09.
      md "\\%auswahl%\c$\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\Temp" 
10.
   ) ELSE IF %%c==en ( 
11.
      md "\\%auswahl%\c$\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\Data" 
12.
      md "\\%auswahl%\c$\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\Temp" 
13.
14.
15.
@ECHO 456 
16.
GOTO eof
Im skip=17 lag der Fehler. Wenn ich nur 1 Zeile als Rückmeldung bekomme, kann ich natürlich nicht die ersten 17 überspringen...


Manchmal sieht man den Wald vor lauter Bäumen nicht...

Grüße, André
Bitte warten ..
Mitglied: DonSm00chY
29.03.2007, aktualisiert 18.10.2012
So, hab aus der Frage mal eine Antwort gemacht - in Form eines kleinen Tutorials. Demnächst werde ich noch meinen Beitrag zur schtasks.exe überarbeiten.
Bitte warten ..
Mitglied: Biber
29.03.2007 um 13:43 Uhr
Moin, DonSm00chY,

vielen Dank für dieses schöne Tutorial und Deine damit verbundene Arbeit.
Find ich klasse.

Habe es hochgestuft zum Tutorial.
Solche Aktionen wie Deine entschädigen mich (und einige andere Stammuser hier) für viele andere Postings.

Danke
Biber
Bitte warten ..
Mitglied: micneu
13.05.2009 um 14:05 Uhr
Super geschrieben.....

Viel spaß noch
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Windows Server
gelöst Bestimmte Computer-Namen automatisch in bestimmte OU verschieben (1)

Frage von Robbi666 zum Thema Windows Server ...

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 ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...