scriptkiddy
Goto Top

Beispiellösung Batchdatei Dateisicherung für alle lokalen Userverzeichnisse

Hallo Leute ich brauche echt mal dringend eure Hilfe ich bin am Verzweifeln....
Also ich möchte gerne per batch datei die ich dann bei Windows als script beim herunterfahren ausführen lasse die Eigenen Dateien auf eine externe Festplatte sichern dazu habe ich mir folgendes script gebastelt.
@ECHO off
echo   ##############################################################
echo   #                                               Testversion  #
echo   #  Sicherungsscript fuer Eigene Dateien                      #
echo   #  ALPHA VERSION                                             #
echo   #                                                            #
echo   #                                                            #
echo   #  Dieses Script wurde erstellt von Patrick                  #
echo   #                                                            #
echo   #     erstellt April 06                                      #
echo   ##############################################################
echo.
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b  
ECHO.
ECHO Die Dateiensicherung von User Patrick wird gestartet....
ECHO.
(date /t & time /t time) >> F:\Backup\backuplog.txt
xcopy "C:\Dokumente und Einstellungen\Patrick\Eigene Dateien\*.*" "F:\Backup\Patrick\%date%_%CTIME%" /S /D /Y /Q >> F:\Backup\backuplog.txt  
ECHO.
ECHO Datensicherung wird barbeitet...
ECHO.
ECHO Die Dateiensicherung ist abgeschlossen...
ECHO.
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b  
ECHO.
ECHO Die Dateiensicherung von User Juergen wird gestartet....
ECHO.
(date /t & time /t time) >> F:\Backup\backuplog.txt
xcopy "C:\Domumente und Einstellungen\Jürgen\Eigene Dateien\*.*" "F:\Backup\Patrick\%date%_%CTIME%" /S /D /Y /Q >> F:\Backup\backuplog.txt  
ECHO.
ECHO Datensicherung wird barbeitet...
ECHO.
ECHO Die Dateiensicherung ist abgeschlossen...
ECHO.
ECHO Windows wird jetzt heruntergefahren.... 
Naja ich denke das ist so ja alles schön und gut nur hab ich jetzt das Problem das bei der Sicherung Die Meldung kommt das die datei *.* nicht gefunden wurde.... allerdings nur bei User Jürgen
User Patrick wird richtig gesichert und der passende eintrag in der log datei wird auch angelegt nur eben bei User Jürgen macht die Kiste mucken Leute ich bracuh echt eure Hilfe....
Kommentar vom Moderator Biber am Feb 04, 2010 um 16:53:52 Uhr
Beitrag wurde seinerzeit von einer Frage zu einer Anleitung umgestuft (siehe unten).
Deshalb habe ich heute den ursprünglichen nicht mehr passenden Titel "Problem mit batch datei für dateisicherung " auch geändert.

Content-Key: 30481

Url: https://administrator.de/contentid/30481

Printed on: April 16, 2024 at 05:04 o'clock

Member: Biber
Biber Apr 15, 2006 at 21:43:14 (UTC)
Goto Top
Moin scriptkiddy,

drei Ursachen sind als Fehler wahrscheinlich:
- der User, der den Batch startet, hat keine Rechte auf die Dateien in Jürgens Unterverzeichnissen (Wahrscheinlichkeit 2%)

- der Batchjob bzw. die CMD-Shell benutzt einen anderen Zeichensatz als Windows und das, was im Explorer als "Jürgen" angezeigt wird, wird beim DIR-Befehl am CMD-Prompt als "J}rgen" oder so angezeigt (Wahrscheinlichkeit 6%)

- oder Du hast einen Tippfehler drin und es heißt beim Jürgen:
RICHTIG: xcopy "C:\Dokumente und Einstellungen.....
BISHER: xcopy "C:\Domumente und Einstellungen...
(Wahrscheinlichkeit 92%) face-wink

Gruß und Frohe Ostern
Biber
Member: scriptkiddy
scriptkiddy Apr 16, 2006 at 08:25:19 (UTC)
Goto Top
Hi Biber danke für die schnelle anwort .... face-wink
Also Mal zu deinen möglichen Ursachen...

Zu Ursache 1:
Ich teste die Batch auf dem Computeradministratoraccount
Also denke diese Ursache scheidet aus...

Zu Ursache 2:
Hm möglich... Nur wie kann ich das überprüfen ?

Zu Ursache 3:
Schreibfehler sind zu 100% ausgeschlossen...
habe die Befehlszeile von User Patrick kopiert und danach nur noch den User Jürgen eingefügt. Ich könnte mir natürlich vorstellen das das mit dem ü zusammenhängt gibt es den keinen Befehl mitdem ich dieser Kiste sagen kann das er das ü irgendwie ignoriern sollte oder was weiß ich....
Es kommt ja die Meldung Datei *.* wurde nicht gefunden....
Weshalb hab ich auch keine Ahnung der *.* Befehl heißt ja nur das es das gesammte Verzeichnis kopieren soll....

Naja also ich bin echt am verzweifeln ich weiß beim besten willen nicht wieso das nich geht
face-sad
Gruß Scriptkiddy
Member: scriptkiddy
scriptkiddy Apr 16, 2006 at 08:55:37 (UTC)
Goto Top
OK Leute ich würde sagen ich hab das Problem gefunden.....
Habe neuen Benutzer mit dem Namen Juergen angelegt..
Es liegt tatsächlich am ü im Benutzernamen Jürgen Jetzt natürlich meine Frage gibts da nich einen Befehl der es mir erlaubt trotz ü zu sichern währe ###e wenn nicht ich kann nicht einfach den Nutzer Jürgen löschen und ihm den Nutzernamen Juergen geben währe wahnsinniger aufwand die dateien der ganzen Programme (CAD) zu sichern ich würde mir das gern ersparen face-big-smile
Member: n.o.b.o.d.y
n.o.b.o.d.y Apr 16, 2006 at 10:16:17 (UTC)
Goto Top
Hallo,

Es liegt tatsächlich am ü im
Benutzernamen Jürgen Jetzt
natürlich meine Frage gibts da nich
einen Befehl der es mir erlaubt trotz
ü zu sichern währe

Wie ist es denn wenn Du auf der Comandozeile einfach mal nach Dokument und Einstellungen wechselst und die mir einem DIR anschaust wie Windows unter DOS den "Jürgen" darstellt. Oder Du nutzt im Script auch an der Stelle Wildcarts, so nach dem Motto cd j*. Setzt aber natürlich voraus, dass Jürgen der einzige User mit "J" am Anfang ist....

Ralf
Member: Biber
Biber Apr 16, 2006 at 12:24:46 (UTC)
Goto Top
Moin,

um festzustellen, ob unter dem CMD-Interpreter die gleichen Zeichensätze verwendet werden
- CMD-Fenster öffnen
- mit Befehl "CHCP" feststellen, welche Codepage verwendet wird. (wird "850" anzeigen vermutlich"
- vom CMD-Prompt aus mal ein
Dir "C:\Dokumente und Einstellungen\J*" machen und schauen, wie "Jürgen" angezeigt wird.

Wenn das "ü" NICHT richtig dargestellt wird:
a) entweder mal probieren, ob ein "CHCP 1252" das Problem behebt.
Wenn ja, dieses CHCP 1252 in den Batch einbauen.
b) oder, wie Ralf skizziert hat, mit Wildcards dieses Verzeichnis ansprechen.
c) oder das Wie-Auch-immer-geschriebenen-J?rgen per
Dir /A:d "C:\Dokumente und Einstellungen\J*" im Batch abfragen und mit der Rückgabe arbeiten. (Aber so weit wird es nicht kommen -a) wird einfacher sein.

Sonst bitte nochmal posten - die zwei Zeilen bekomm ich noch zusammen nach dem Frühstück.

Gruß Biber
Member: scriptkiddy
scriptkiddy Apr 16, 2006 at 13:52:15 (UTC)
Goto Top
Hey Biber du bist echt super also mit der codepage 1252 funktioniert das einwandfrei... face-big-smile

Echt klasse

Jetzt hab ich noch eine kleinere Frage:

Kann ich das Echo mit der geänderten Codepage unsichtbar machen ?

Wenn ich diese Frage noch beantwortet bekommen habe bin ich Wunschlos glücklich face-smile

Grüße
Scriptkiddy
Member: maneich
maneich Apr 16, 2006 at 15:59:30 (UTC)
Goto Top
Hallo,

einfach am zeilenende ">nul" ohne Hochkomma schreiben, damit wird das prompt ausgespart; also

"CHCP 1252">nul

MfG maneich
Member: Biber
Biber Apr 16, 2006 at 16:26:12 (UTC)
Goto Top
Das nenne ich eine gelungene Gemeinschaftsaktion.. face-wink

Ich setze den Beitrag auf "Gelöst" und wünsche Euch allen noch Frohe Ostern mit genauso wenig Herumgeeiere wie hier bei der Lösungsfindung...

Danke an Alle
Biber
Member: scriptkiddy
scriptkiddy Apr 18, 2006 at 11:34:06 (UTC)
Goto Top
Da ich total zufrieden mit meinem hübschen script bin und ich von Robert eine Mail bekommen habe ich solle es doch posten tu ich das hier einfach mal face-smile

@echo off
echo ##############################################################
echo # Testversion #
echo # Backupscript #
echo # Version 1.0 #
echo # #
echo # #
echo # Dieses Script wurde erstellt von Patrick #
echo # #
echo # erstellt April 06 #
echo ##############################################################
echo.
(date /t & time /t time) >> F:\Backup\Eigene_Dateien\Backuplog.txt
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b
ECHO.
ECHO Die Datensicherung von User Patrick wird gestartet....
ECHO.
ECHO Datensicherung von User Patrick wird barbeitet...
ECHO.
xcopy "C:\Dokumente und Einstellungen\Patrick\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\Patrick\ /S /D /Y >> F:\Backup\Eigene_Dateien\backuplog.txt
ECHO.
ECHO Die Dateiensicherung von User Patrick ist abgeschlossen...
ECHO.
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b
ECHO.
ECHO Die Dateiensicherung von User Juergen wird gestartet....
ECHO.
ECHO Datensicherung von User Juergen wird barbeitet...
CHCP 1252>nul
ECHO.
xcopy "C:\Dokumente und Einstellungen\Jürgen\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\Jürgen\ /S /D /Y >> F:\Backup\Eigene_Dateien\backuplog.txt
ECHO.
CHCP 850>nul
ECHO Die Dateiensicherung ist abgeschlossen...
ECHO.
ECHO Windows wird jetzt heruntergefahren....


Dieses Script habe ich bei Windows XP als atomatisch auszuführendes Script eingespeist und so wird jetzt bei jedem herunterfahren die Eigenen Dateien auf die Externe Festplatte gesichert.
Ihr könnt euch das Script ja gerne auch anpassen einfach kopieren und in eine Textdatei einfügen diese dann mit der endung .bat abspeichern einfach nur noch doppelklick auf die neue datei und schon legt Windows los....
Ich würde euch empfehlen einfach am ende der Datei den befehl
Pause reinzuschreiben so wartet Dos bis ihr eine Taste gedrückt habt befor sich das Fenster wieder schliest, wenn euer Script dann Funktioniert könnt ihr dieses Befehl ja wieder löschen...

PS:Wenn ihr dochnoch Fragen dazu habt schreib mir ne Nachricht ich beantworte sie gerne face-wink

Viel Spaß damit

Euer Scriptkiddy face-smile
Member: RobertTischler
RobertTischler Apr 25, 2006 at 19:45:19 (UTC)
Goto Top
Hallo

Ich habe heute abend mal dein Script getestet und finde es super. Einfach und verstandlich halbwegs für mich. Ich hab jetzt nur noch ein paar fragen. Wenn ich mehr benutzer habe kann ich einfach den Teil ECHO Die ..... gestartet bis Echo Die ... Abgeschlossen kopieren Pfad anpassen und den Namen denke ich zu mindestens. Wenn ich den Pfad ändere auf ein anderes Verzeichnis dann könnte ich doch auch andere Verzeichnisse sichern. Was für mich wichtig ist werden die Daten nach dem Kopieren vergliechen bzw wenn nicht kann man so eine Funktion nachrüsten währe für mich sehr wichtig. Wenn ich jetzt in meinem Eigene Dateien verzeichnis eine Datei Lösche wird sie dann auch im Backup verzeichnis gelöscht? So das waren erst mal meine ersten Fragen ich denke mal da fallt mir später noch was ein.

MFG

PS: da fäht mir noch was ein kannst du bitte diesen teil näher erklären ich hab leider total keine ahnung vom Programmieren und so würde ich un gefähr verstehen was dort ablauft.

(date /t & time /t time) >> F:\Backup\Eigene_Dateien\Backuplog.txt
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b
Member: scriptkiddy
scriptkiddy Apr 28, 2006 at 19:16:31 (UTC)
Goto Top
hm also ich würde sagen du kannst das script endlos weiter verlängern und halt immer den xcopy Pfad ändern. dann dieser teil bei deinem PS: naja face-big-smile diesen Teil habe ich nicht selber zusammengesetzt aber soweit ich weiß sollte der dafür gut sein das das ding weiß dass es das Datum und die Zeit in die Backuplog.txt speichern soll .....aber so völlig sicher bin ich mir bei diesem Teil nicht face-smile

Grüße euer Scriptkiddy face-wink
Member: Biber
Biber Apr 30, 2006 at 17:22:41 (UTC)
Goto Top
Moin Robert und Scriptkiddie,

wie bereits oben geschrieben - das gemeinsame Entwickeln und Verfeinern einer Lösung hier im Forum finde ich immer etwas Feines- von daher will ich hier auch keine "fertigen" Alternativen posten. Aber noch ein paar Fussnoten zu den letzten Fragen anfügen.

Wenn ich mehr benutzer habe kann ich einfach den Teil
ECHO Die ..... gestartet bis Echo Die ... Abgeschlossen kopieren
Pfad anpassen und den Namen denke ich zu mindestens.

Ja, könntest Du machen. Aber da wir das Backup-Script ja wartbar und pflegbar halten wollen, wäre doch der Ansatz einer (bis auf den Benutzernamen gleichen) Unterroutine einem Copy&Paste mit doppeltem, dreifachen oder zehnfachen Code vorzuziehen.
Beispiel - statt- :
...
ECHO Die Datensicherung von User Patrick wird gestartet....
ECHO.
ECHO Datensicherung von User Patrick wird barbeitet...
ECHO.
xcopy "C:\Dokumente und Einstellungen\Patrick\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\Patrick\ /S /D /Y >> F:\Backup\Eigene_Dateien\backuplog.txt  
ECHO.
ECHO Die Dateiensicherung von User Patrick ist abgeschlossen...
ECHO
... (nächster User..)
...lieber so:
...
Set "AlleMeineUser=Patrick Jürgen Hinz Kunz"  
For %%i in ("AlleMeineUser%) do call :MachMirDenBackup %%i  
goto :eof

:MachMirDenBackup Parameter 1 ist Username==Verzeichnisname
ECHO Die Datensicherung von User %1 wird gestartet....
ECHO.
ECHO Datensicherung von User %1 wird bearbeitet...
ECHO %date% %time% Beginn Datensicherung von User %1...>> F:\Backup\Eigene_Dateien\backuplog.txt
xcopy "C:\Dokumente und Einstellungen\%1\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\%1\ /S /D /Y >> F:\Backup\Eigene_Dateien\backuplog.txt  
ECHO.
ECHO Die Dateiensicherung von User %1 ist abgeschlossen...
ECHO %date% %time% Ende Datensicherung von User %1...>> F:\Backup\Eigene_Dateien\backuplog.txt
ECHO.
goto :eof

Wenn ich den Pfad ändere auf ein anderes Verzeichnis dann könnte ich doch auch andere Verzeichnisse sichern.
Jepp.
Was für mich wichtig ist werden die Daten nach dem Kopieren vergliechen
Nein.
bzw wenn nicht kann man so eine Funktion nachrüsten währe für mich sehr wichtig.
Hm...ja... aber ob es sich lohnt..
Du kannst (suche mal nach Beispielen dazu im Forum) sowohl mit dem XCopy-Parameter "/V" =Verify arbeiten oder nach dem Kopieren mit "FC.exe" Quell-und Zieldateien vergleichen... okay.
Und wie weiter? Welche sinnvolle Aktion schwebt Dir vor, wenn ein Kopieren einen Fehler bringt? Kann sein, dass Quelldatei in Benutzung ist, dass die Rechte zum Lesen fehlen, dass die Datei tatsächlih defekt ist, dass eine gleichnamige Zieldatei schreibgeschützt ist... was machst Du mit der Info "Kopieren hat nicht geklappt"? Kopieren endlos wiederholen lassen?

Wenn ich jetzt in meinem Eigene Dateien verzeichnis eine Datei Lösche wird sie dann auch im Backup verzeichnis gelöscht?
Nein. Soll auch nicht. Das Scriptchen hier macht eine Sicherung. Verzeichnisse synchronisieren ist eine andere Funktionalität, eine andere Strategie. Kann "Robocopy ../MIR" oder eine Menge Freeware-Utilities. Ist dennoch was anderes als eine Sicherung.

(date /t & time /t time) >> F:\Backup\Eigene_Dateien\Backuplog.txt
Lass einfach die Umleitungen weg, dann siehst Du, was hier passiert.
Datum und Zeit werden jeweils als Einzelzeilen in die Logdatei geschrieben.
Alternative wäre:
Echo %date% %time% Beginn der Sicherung >> F:\Backup\Eigene_Dateien\Backuplog.txt
...und was hier abgeht...
FOR /F "tokens=1,2 delims=/: " %%a in ('time/T') do set CTIME=%%a-%%b
Hier wird die Zeit, z.B. "19:22:45,35" zerlegt in Tokens(="Worte"), die getrennt sind durch ":" und "/". Raus kommt dann in der Variablen CTIME der String "19-22".
Verwendet wird der im Script nicht, aber so ließen sich datums-/zeitspezifische Verzeichnisnamen für Sicherungen basteln.

Grüße
Biber
Member: RobertTischler
RobertTischler Apr 30, 2006 at 17:54:25 (UTC)
Goto Top
Hallo

Danke Biber. Das sindzum Teil die Infos die ich noch brauche um zu verstehen was es macht und damit ich verstehe wenn ich was ändere. Was mir auch nicht so gut gefählt ist die gewählte Verzeichnisstruktur aber dasbekomme ich auch selber hin. Ok dasmit dem vergleichen der Datein ist glaube keine so gute Idee von mir mit der xcopy Option /V würde esgehen aber wo sehe ich das es nicht richtig kopiert wurde und mit Fc ist glaube das vergleichen der Verzeichnisse auch nicht so optimal da sich da Zielverzeichnis anders ändert als das Quellverzeichnis wo auch Daten gelöscht werden und im Zielverzeichnis wird ja nur hinzugefügt.

MFG
Member: scriptkiddy
scriptkiddy Apr 30, 2006 at 18:31:47 (UTC)
Goto Top
Hallo nochmal zusammen also ich finde deine Vorschläge wieder mal super Biber

Ich bin eh gerade noch dran mein script mithilfe von errorleveln und if befeheln zu verbessern wenn dass dann alles läuft poste ich das hier nochmal ...

Grüße Scriptkiddy
Member: RobertTischler
RobertTischler Apr 30, 2006 at 20:13:51 (UTC)
Goto Top
Hallo

Das ware net ich komme mit den Änderungen nicht ganz klar aber ich probier es weiter.

MFG
Member: scriptkiddy
scriptkiddy May 01, 2006 at 10:15:52 (UTC)
Goto Top
Hallo Biber hm also deine Änderung währe ja schön nur bei mir nimmt das dein script nicht an und ich kann dem auch nicht ganz folgen könntest du mir vielleicht mal dein teilscript einbauen und dann posten zusammen mit meinen Änderungen währe das dann wohl das "perfekte Sicherungsbatch" face-big-smile


Grüße Scriptkiddy face-smile
Member: Biber
Biber May 03, 2006 at 18:23:00 (UTC)
Goto Top
Sorry für die lange Pause, scriptkiddy,

hatte es fast vergessen...
::---------snipp MyFirstBackup.bat
@ECHO off & setlocal
Set "Log=F:\Backup\Eigene_Dateien\backuplog.txt"  
::--------die nächsten beiden Zeilen nur zum Test --dann auskommentieren
Set "DEBUG=Echo simuliere: "   
Set "log=CON"  
::-------------end of Debug section
echo ##############################################################
echo # Testversion #
echo # Backupscript #
echo # Version 1.0 #
echo # #
echo # #
echo # Dieses Script wurde erstellt von Patrick #
echo # #
echo # erstellt April 06 #
echo ##############################################################
echo.
CHCP 1252>nul
Set "AlleMeineUser=Patrick Jürgen Hinz Kunz"  
For %%i in (%AlleMeineUser%) do call :MachMirDenBackup %%i
CHCP 850>nul
ECHO Die Dateiensicherung ist abgeschlossen...
ECHO.
ECHO Windows wird jetzt heruntergefahren....
goto :eof
~~~~~~~~~Raum für Notizen~~~~~~~~~

~~~~~~~
:MachMirDenBackup Parameter 1 ist Username==Verzeichnisname
ECHO Die Datensicherung von User %1 wird gestartet....
ECHO.
ECHO Datensicherung von User %1 wird bearbeitet...
ECHO %date% %time% Beginn Datensicherung von User %1...>>%log%
%DEBUG% xcopy "C:\Dokumente und Einstellungen\%1\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\%1\ /S /D /Y >>%log%  
ECHO.
ECHO Die Dateiensicherung von User %1 ist abgeschlossen...
ECHO %date% %time% Ende Datensicherung von User %1...>>%log%
ECHO.
goto :eof
::---------snapp MyFirstBackup.bat

Hier: For %%i in ("AlleMeineUser%)... hatte ich meinen obligatorischen Tippfehler.
Das Anführungszeichen vorn sollte auch ein Prozentzeichen werden.

Gruß
Biber
Member: scriptkiddy
scriptkiddy May 03, 2006 at 18:47:27 (UTC)
Goto Top
Hi Biber ,

Kein Problem ich bin eh noch am basteln face-wink

Ich hab jetzt dein Scriptteil eingebaut...

Jetzt hab ich noch kleines Problem es sichert die dateien von den Usern die man ja
bei Set "AlleMeineUser=user user user "
Angegeben hat nur wenn jetzt die user beendet sind bringt der immer noch eine fehlermeldung das der User *.* nicht existiert (is ja klar die User die existieren sind ja fertig abgearbeitet) nur wie kann ich das jetzt unterdrücken das muss ja nich sein ..... face-big-smile


Grüße und Danke für die Hilfe

Scriptkiddy face-smile
Member: Biber
Biber May 03, 2006 at 19:46:02 (UTC)
Goto Top
Gut,
das sollte ja nur die ungefähre Skizze sein..
An ein paar Stellen würde ich natürlich bei einem "produktiven" Batch schon noch nachbessern, insbesondere:
- gibt es die Quellverzeichnisse
- gibt es das Verzeichnis für die Logdatei und darf ich da schreiben
- bekomme ich noch irgendwelchen Befehlszeilen einen Fehler/Errorlevel zurück
- und wie gehe ich damit um (ganz abbrechen oder mit nächstem Benutzer weiter?)

Wenn Du Fehlermeldungen "...existiert nicht../ ..nicht gefunden.." vermeiden willst, dann vorher prüfen mit "if exist [Verzeichnis/Datei]"
Also im dem "MachMirDenBackup"-Block als neue erste Zeile:
if not exist "C:\Dokumente und Einstellungen\%1\Eigene Dateien\*.*" goto :eof

Siehe in der Hilfe bei "IF /?" am CMD-Prompt.

Gruß
Biber
P.S. Was bastelst Du denn da so lange? face-wink
Member: scriptkiddy
scriptkiddy May 03, 2006 at 19:47:21 (UTC)
Goto Top
So hier mal der Anfang meines Scripts ich brauche mal eure Hilfe:

@echo off

title Backupscript

Set "Log=F:\Backup\Eigene_Dateien\backuplog.txt"

ECHO.
ECHO #####################################
ECHO # Willkommen im Sicherungsprogramm #
ECHO #---------------------------------- #
ECHO #erstellt von Patrick Huegel #
ECHO #####################################
ECHO.

:input
SET /p input=Bitte Befehl eingeben:

IF /i "%input%"=="exit" EXIT
IF /i "%input%"=="" goto :help
IF /i "%input%"=="start" goto :start
IF /i "%input%"=="help" goto :help


:start
Set "Userlist=Patrick Juergen"
For %%i in (%Userlist%) do call :Backup %%i
ECHO Die Dateiensicherung ist abgeschlossen...
ECHO.
ECHO Windows wird jetzt heruntergefahren...


:Backup
CHCP 1252>NUL
ECHO Die Datensicherung von User %1 wird gestartet....
ECHO.
ECHO Datensicherung von User %1 wird bearbeitet...
ECHO %date% %time% Beginn Datensicherung von User %1...>>%log%
%DEBUG% xcopy "C:\Dokumente und Einstellungen\%1\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\%1\ /S /D /Y >>%log%
ECHO.
ECHO Die Dateiensicherung von User %1 ist abgeschlossen...
ECHO %date% %time% Ende Datensicherung von User %1...>>%log%
CHCP 850>NUL
ECHO.


:help
ECHO.
ECHO.
ECHO Folgende Parameter sind vertreten:
ECHO.
ECHO Befehl: Wirkung:
ECHO.
ECHO start Startet die Sicherung
ECHO exit beendet das Programm
ECHO help ruft die Hilfe auf
ECHO.
ECHO.
GOTO :input

Jetzt hab ich hier das Problem das er mir jetzt plötzlich nur noch den User Patrick bearbeitet den User Juergen lässt der aus....


Helft mir face-smile

PS:Ich habe das Thema nochmal geöffnet....


Grüße Scriptkiddy
Member: Biber
Biber May 03, 2006 at 19:55:31 (UTC)
Goto Top
Die "goto :eof" nach den einzelnen Batch-"Teilen" fehlen.

Einmal "goto :eof" oder "goto :input" als neue letzte Zeile des Blocks ":start"
Einmal "goto :eof" als neue letzte Zeile des Blocks ":backup"
Member: scriptkiddy
scriptkiddy May 04, 2006 at 06:23:46 (UTC)
Goto Top
Hallo Biber,

Danke für deine schnelle Antwort,
Ich werde das gleich in mein Script einbauen.
Wenn ich nochmal fragen habe werde ich das in diesem Post wieder reinposten,
Ich werde mich dafür um so schneller an das script machen damit ihr alle was davon habt face-wink

Folgende Probleme:

Bei User Jürgen meldung bringt *.* Datei nicht gefunden.....
Und das Jürgen schreibt das J|rgen statt Jürgen trotz Codepage 1252
Außerdem möchte ich das es nach der Sicherung von den Usern zurück zu :input springt damit man nicht extra das fenster nochmal aufmachen muss....


Grüße

Scriptkiddy face-smile
Member: n.o.b.o.d.y
n.o.b.o.d.y May 05, 2006 at 06:38:31 (UTC)
Goto Top
Moin!

Macht ihr daraus nachher ein kleines TuT?? Damit das nicht in den Analen des MySQL-DB verschwindet! Wäre doch schade um die harte Arbeit.. face-smile

Grüße und allen ein sonniges Wochenende!

Ralf
Member: Biber
Biber May 05, 2006 at 07:10:13 (UTC)
Goto Top
Moin scriptkiddy,

Bei User Jürgen meldung bringt *.* Datei nicht gefunden.....
Und das Jürgen schreibt das J|rgen statt Jürgen trotz Codepage 1252
Okay, das lässt sich ja vorher am CMD-Prompt testen, unter welcher Codepage der "Jürgen" als "Jürgen" angezeigt wird. Nutz die Mittagspause.. face-wink

Außerdem möchte ich das es nach der Sicherung von den Usern zurück zu :input springt
siehe oben... nach dem Block ":start" eine Zeile mit "goto :eof"(==Ende) oder "goto :input".

@ralf
Macht ihr daraus nachher ein kleines TuT??
Jau, eigentlich habe ich auch mit dem Gedanken geliebäugelt, diesen Beitrag als "Tutorial" hochzustufen, besonders weil auch der Umgang mit und das Lösen von den üblicherweise auftretenden Widrigkeiten des M$-Umfelds gut nachvollziehbar diskutiert wird.
Ich wollte eigentlich damit warten, bis eine "final initial version" vorliegt, mit der auch auch scriptkiddy zufrieden ist.. aber der ist ja wohl so ein Perfektionist..das würde zu lange dauern.
Ich stufe es um als Tutorial in der Gewissheit, dass die "Version 1.00" zeitnah gepostet wird.

Gruße
Biber
Member: RobertTischler
RobertTischler May 05, 2006 at 08:19:26 (UTC)
Goto Top
Hallo

Das mit dem Tutorial habe ich scriptkiddy auch schon geraten da man doch auch einge sachen gut erklären kann. Man sollte dann aber zu jeder Code Zeile eine Ungefähre Beschreibung der Funktion angeben. Damit solche Deppen wie ich ungefähr verstehen was genau gemacht wird und es nicht einfach blind abschreiben und dann schreien das geht ja gar nicht, weil sie vielleicht die Laufwerks angaben nicht angepasst haben.

MFG
Member: scriptkiddy
scriptkiddy May 05, 2006 at 19:29:24 (UTC)
Goto Top
Hallo zusammen face-big-smile,

Also 1. Ja ich bin nunmal ein perfektionist aber naja......
2. Danke das ihr meinen Beitrag so gut findet das er als Tutorial verwendet wird.... face-big-smile
3. Das "script" jetzt ja eher zum Tool verarbeitet.... ist zwar noch nich entgültig fertig
es funktionieren noch nich alle Funktionen aber wenn das erstmal fertig ist dann sollte das für jeden administrator eine erleichterung sein....
Aber da ihr ja schon so ungeduldig seid poste ich meine bisherigen Änderungen.....


@echo off

title Admintool

REM ---------------------------------Festlegen der Logdatei---------------------------------------

Set "Log=F:\Backup\logs\backuplog.txt"

ECHO.
ECHO #####################################
ECHO # Willkommen im Sicherungsprogramm #
ECHO #---------------------------------- #
ECHO #erstellt von Patrick Huegel #
ECHO #####################################
ECHO.
ECHO.

REM --------------------------------------- Ausgeben der Befehlsliste ---------------------------------

GOTO :help

:main
ECHO.
ECHO ##############
ECHO # Hauptmenue #
ECHO ##############
ECHO.

:input
ECHO.

REM --------------------------------------------- Abfrage des Befehls ------------------------------------

SET /p input=Bitte Befehl eingeben:

REM ------------------------------------------- Die Befehlsklassifizierung-----------------------------
REM Also wenn bei der Abfrage (%input%) exit eingegeben wird wird EXIT ausgeführt
REM ganuso bei dem goto befehlen

IF /i "%input%"=="exit" EXIT
IF /i "%input%"=="?" goto :help
IF /i "%input%"=="backup" goto :start
IF /i "%input%"=="help" goto :help
IF /i "%input%"=="ping" goto :pingen


:start

REM ------------------------------Die "Userlist" ---------------------------------
REM Hier werden die zu sichernden User angegeben im Beispiel sind das Patrick und Jürgen

Set "Userlist= Patrick Jürgen"

REM ----------------------- Backupstarten---------------------------------------
REM Hier wird mit den Parameter die in der "Userlist" angegeben sind zum Block :Backup gegangen

For %%i in (%Userlist%) do call :Backup %%i

ECHO.
ECHO Die Dateiensicherung ist abgeschlossen..
ECHO.
goto :input

REM ---------------------------------- Backupblock ----------------------------------------
REM Hier findet der eigendliche Backup vorgang statt....

:Backup
ECHO.
ECHO.

REM --------------------- Codepage auf standart zurücksetzten ---------------------------
REM Hier wird die Codepage auf 850 gesetzt der parameter >NUL bewirkt das die Meldung "Aktive Codepage 850"
REM nicht ausgegeben wird.

CHCP 850>NUL
ECHO Die Datensicherung von User %1 wird gestartet....
ECHO.
ECHO Datensicherung von User %1 wird bearbeitet...

REM --------------------------------- Beginn der Sicherung in LOG schreiben ----------------------------------------
REM hier wird das %date% (Datum) und die %time% (Zeit) der Sicherung in die oben festegelegte LOG geschrieben

ECHO %date% %time% Beginn Datensicherung von User %1...>>%log%

REM -------------------------------- Kopiervorgang -------------------------------------
REM Hier wird der Kopiervorgang gestartet ...... hilfe zum xcopy bekommt man wenn man in der cmd.exe einfach
REM help xcopy eingibt

%DEBUG% xcopy "C:\Dokumente und Einstellungen\%1\Eigene Dateien\*.*" F:\Backup\Eigene_Dateien\%1\ /S /D /Y
ECHO.

REM ----------------------------------- "Fehlerprüfung" ------------------------------
REM Hier wird sollte ein Fehler beim sichern festgestellt werden die ECHO meldung ausgegeben

IF errorlevel ==1 ECHO Sicherung von %1 fehlgeschlagen

ECHO Die Dateiensicherung von User %1 ist abgeschlossen...

REM --------------------------------- Ende in LOG schreiben -----------------------
REM hier wird das Ende der sicherung in die LOG datei geschrieben

ECHO %date% %time% Ende Datensicherung von User %1...>>%log%
ECHO.
goto:eof

REM ------------------------------------------ Hilfemenü----------------------------------
REM die ausgabe die bei eingabe von help ausgegeben wird

:help
ECHO.
ECHO Befehlsliste:
ECHO exit beendet das Programm
ECHO help gibt diese Hilfe aus
ECHO backup Sicherung der eigenen dateien
ECHO ping pingmodul
ECHO.
ECHO.
GOTO :main

REM ---------------------------------- Der Block für das pingen ---------------------------------
REM hier kommt dann das Pingmodul hin momentan bringt er nur die Meldung das dieses Modul noch nicht fertig ist
REM und springt wieder zur Befehlseingabe

:pingen

ECHO.
ECHO Dieses Modul ist leider noch nicht fertig !
GOTO :input
Member: GODOFWAR
GODOFWAR Apr 17, 2007 at 08:35:35 (UTC)
Goto Top
sieht echt toll aus ;d mach die anderen 5% noch und es ist perfekt *g*

mach doch noch das 100$% script mit ner kleinen beschreibung evtl kapieren es ned so alle ;D hatte auch 5min überlegt bis alles klar war (oder zumindest 95% ) ;D

aber alles in allem gute arbeit ;D weiter so du "kiddi"