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
GELÖST

Robocopy, Ordner erstellen mit Datum und Zeit, EDIT Auswertung von Ping

Frage Entwicklung Batch & Shell

Mitglied: Teddyhamster2000

Teddyhamster2000 (Level 1) - Jetzt verbinden

02.01.2009, aktualisiert 03.01.2009, 23350 Aufrufe, 10 Kommentare

Hallo Forum,

ich bin dabei ein Batch-Script zu basteln, welches mir für Backups Ordner X nach Zeil Y kopiert und dem neuen Ordner dann noch das aktuelle Datum und die Zeit mitgibt.

Sieht aktuell so aus:

set datum=%date%
set zeit=%time%

robocopy "C:\Documents and Settings\%username%\Favorites" /MIR "\\Server\Share$\Backup\Backup.%datum%.%zeit%" /log+:\\Server\Share$\Backup\log.txt


Das ganze funktioniert leider nur mit dem aktuellen Datum.

Sieht also aktuell so aus: \\Server\Share$\Backup\Backup.Datum

Soll aber so aussehen: \\Server\Share$\Backup\Backup.Datum.Zeit

Ich habe schon alle möglichen Variationen ausporbiert. Ich verstehe einfach nicht, warum er die Zeit nicht "frisst". Zuerst dachte ich, dass es nicht geht, weil der Befehl "date" bzw. "time" ja eigentlich eine Eingabe erfordert. Da es mit dem Datum ja aber schon geht...

Vielleicht habt ihr eine Idee?

Danke & Gruß
Mitglied: bastla
02.01.2009 um 13:34 Uhr
Hallo Teddyhamster2000!

Da in der Zeitangabe Doppelpunkte enthalten sind, kann diese nicht als Bestandteil des Dateinamens verwendet werden ...

Wenn Du Datum- und Zeitstrings selbst zusammenbaust, kannst Du auch zB die Schreibweise "JJJJMMTT" für das Datum verwenden (was etwa das Sortieren leichter macht):
01.
set "datum=%date:~-4%%date:~-7,2%%date:~-10,2%" 
02.
set "zeit=%time:~0,2%%time:~3,2%%time:~6,2%"
Trennzeichen kannst Du je nach Wunsch noch ergänzen (jeweils zwischen die beiden aufeinander folgenden "%"-Zeichen setzen) ...

[Edit]
Da bei einstelligen Stundenzahlen in der Uhrzeit (also für Zeiten vor 10:00:00) ein (störendes) Leerzeichen am Anfang des Zeitstrings landet, folgende verbesserte Version:
01.
set "zeit=%time:~0,2%%time:~3,2%%time:~6,2%" 
02.
set "zeit=0%zeit: =%" 
03.
set "zeit=%zeit:~-6%"
Die Zeile 2 setzt vor den bisherigen Zeitstring noch eine Null und ersetzt dann alle enthaltenen Leerzeichen (kann eigentlich ohnehin nur jenes am Anfang sein) durch "Nichts" (entfernt also die Leerzeichen).

Die Zeile 3 nimmt von dem so behandelten String nur die letzten 6 Stellen (damit nicht auch vor zweistelligen Stundenzahlen noch die "0" steht); sollten noch Trennzeichen vor und nach der Minutenzahl verwendet werden, dann natürlich die letzten 8 Zeichen verwenden.
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Teddyhamster2000
02.01.2009 um 14:05 Uhr
Hallo bastla!

Danke für die Antwort! Hat wunderbar geklappt ;)

Was ich noch nicht verstehe, ist dass das Lofile immer überschrieben wird, obwohl ich /log+: verwendet habe...

Edit: War falsch was ich gesagt habe, er überschreibt es nicht, er ergänz das Logfile.

Thema ist also geklärt!
Bitte warten ..
Mitglied: Teddyhamster2000
03.01.2009 um 15:29 Uhr
EDIT: ###

Neues Problem:

Wollte in dem Script noch prüfen, ob der Server per Ping erreichbar ist. Als Vorbild habe ich mir das genommen:

http://www.administrator.de/Automatisierte_Sicherung_per_Robocopy_-_Die ...

Bie mir sieht das aktuell so aus:

.
.
ping %server% -n 1
echo errorlevel:%errorlevel%
if errorlevel==1 (goto C) else (goto D)
:C
net send %username% Stelle sicher, dass der Server erreichbar ist!
exit

:D
rem hier geht es weiter
.
.

Zum Testen habe ich einen Server genommen, der eingeschaltet ist. ErrorLevel ist also 0 -> Script funktioniert.
Bei einem anderen Server, der nicht eingeschaltet ist liefert der Ping eine "Zeitüberschreitung", und dennoch (?!) ErrorLevel 0 -> damit macht das Script trotzdem weiter (logischerweise)
ErrroLevel 1 bekomme ich aktuell nur hin, wenn ich einen Server nehme, den es nicht gibt, damit liefert Ping "unbekannter Host" und bringt ErrorLevel 1.

Muss ich das verstehen?
Bitte warten ..
Mitglied: bastla
03.01.2009 um 15:38 Uhr
Hallo Teddyhamster2000!

Versuch es mit der Schreibweise
if errorlevel 1 (net send %username% Stelle sicher, dass der Server erreichbar ist! & goto :eof)
Noch als Anmerkung: Unter W2000 wird der Errorlevel ev nicht ordnungsgemäß gesetzt ...

Grüße
bastla
Bitte warten ..
Mitglied: Teddyhamster2000
03.01.2009 um 15:42 Uhr
Danke, werde ich mal versuchen.

Aha, es ist Windows 2000 (zumindest ein w2k Client, auf dem ich das Script teste). Weißt du auch warum? Google erzählt nicht ganz so viel zu dem Thema.

Gruß

Edit: Problem wurde hier auch schon mal beschrieben:

http://www.administrator.de/DOS_Batch_Errorlevel_geht_unter_XP,_aber_ni ...

Ist offenbar ein gut gehüteter MS insider Witz...
Bitte warten ..
Mitglied: Teddyhamster2000
04.01.2009 um 23:47 Uhr
Zitat von bastla:
Hallo Teddyhamster2000!

Versuch es mit der Schreibweise
> if errorlevel 1 (net send %username% Stelle sicher, dass der Server 
> erreichbar ist! & goto :eof) 
> 
Noch als Anmerkung: Unter W2000 wird der Errorlevel ev nicht
ordnungsgemäß gesetzt ...

Grüße
bastla

Ich kam jetzt erst zum Testen. Dein Vorschlag funktioniert genau so wie meiner... Das ändern auch nichts, an dem ErrorLevel unter W2k für Ping...
Bitte warten ..
Mitglied: bastla
05.01.2009 um 11:49 Uhr
Hallo Teddyhamster2000!
Das ändern auch nichts, an dem ErrorLevel unter W2k für Ping...
... was anzunehmen, mir damals aber noch nicht bekannt war ...

Du kannst aber natürlich den Text der "ping"-Ausgabe auswerten, etwa:
ping %server% -n 1|findstr "Antwort" >nul || (net send %username% Stelle sicher, dass der Server erreichbar ist! & goto :eof)
Grüße
bastla
Bitte warten ..
Mitglied: Barney
29.04.2011 um 16:11 Uhr
sry, wenn ich diesen älteren Beitrag nochmal hervorhole. Ich habe aber teilweise Infos aus dem zitierten Code übernommen.

Ich setzte Win7 SP1 ein und möchte mit robocopy auf eine externe Festplatte sichern. Dazu habe ich als ersten Versuch folgendes Skript benutzt:

01.
 
02.
::        --------------------------- Variablen leeren --------------------------- 
03.
set Quelle= 
04.
set Ziel= 
05.
 
06.
::        -------------------------------- Variablen setzen --------------------------------- 
07.
 
08.
set "datum=%date:~-4%%date:~-7,2%%date:~-10,2%" 
09.
set "zeit=%time:~0,2%%time:~3,2%%time:~6,2%" 
10.
set "zeit=0%zeit: =%" 
11.
set "zeit=%zeit:~-6%" 
12.
set Quelle=C:\users\Uli\Desktop 
13.
set Ziel=E:\Backup\Schleppi\sicherung%datum%_%zeit% 
14.
 
15.
mkdir %Ziel% 
16.
 
17.
::        --------------------- Starten der Robocopy ---------------------- 
18.
@Echo off 
19.
robocopy.exe %Quelle% "%Ziel%" /MIR /MT:8  >> "e:\desktop.txt" 
20.
 
21.
pause
Die Sicherung klappt, jedoch wird der Ordner der Sicherung nicht wie vorgegeben benannt sonder quasi von der Quelle übernommen. Im Dateiexplorer wird er als "Desktop" ohne Zusatz von Datum und Zeit angezeigt. In der Konsole heißt er wie oben im Script vorgegeben. Sobald ich als Quelle einen anderen Ordner angebe, klappt alles zu 100%.

Hat jemand eine Idee?

Grüße
Bitte warten ..
Mitglied: bastla
29.04.2011 um 16:45 Uhr
Hallo Barney!

Sich hier "dranzuhängen" ist vermutlich nicht die allerbeste Idee - unter der Annahme, dass Du Teddyhamster2000 vermutlich nicht dazu animieren wirst, seinem letzten Login vom Dreikönigstag des Jahres 2009 ein aktuelles folgen zu lassen, könnten wir hier ziemlich unter uns bleiben ...

... wobei ich (abgesehen vom Entfernen der unnötigen Zeilen 2 bis 4 und 15 und einem Hinzufügen von "setlocal" sehr weit oben im Code) eigentlich nur einen spontanen Einfall hätte: Setze auch "%Quelle%" in der Zeile 19 unter Anführungszeichen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
29.04.2011 um 17:37 Uhr
Moin Barney,

ergänzend zu bastlas Hinweisen nur ein weiterer: Bei einen Robocopy von "C:\users\DeinUsername" solltest du unter Win7 besser den Schalter /XJ zusätzlich verwenden.
Sonst hast du unter Umständen ein paar komische Seiteneffekte.

Anyway: Sollte das In-Anführungszeichen-Setzen der %Quelle% nichts helfen, dann mach bitte eigenen Beitrag auf.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Ordner erstellen und verschieben (6)

Frage von Fromeonly zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

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

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...