das.mordschaf
Goto Top

Batchdatei mit täglich neuem Ordner und kopieren aus verschiedenen Quellen

Mahlzeit,
ich versuche krampfhaft eine Sicherung für Daten eines Servers mit einer Batchdatei zu erstellen.
Was ansich nicht das Problem ist, aber ich möchte das ein neuer Ordner mit dem Datum angelegt wird
(%date% ...klappt auch) in den dann von verschiedenen Ordnern die Daten reingesichert werden (klappt nicht).
Ich muß irgendwie den folgenden xcopy-Zeilen verklickern, das sie in den %date%-Ordner reinkopieren sollen. Dummerweise weiß ich nicht wie ich das umsetzen soll.
Hat jemand eine Idee oder weiß es einfach, wie ich das realisieren kann?

P.S. ist eine tägliche Sicherung

Content-ID: 185898

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

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

Skyemugen
Skyemugen 04.06.2012 um 16:20:17 Uhr
Goto Top
Aloha ...

was genau klappt denn nicht? Wie sieht deine Befehlszeile für xcopy denn derzeit aus?

... ich weiß momentan nicht, was daran scheitern sollte, den Zielordner als "C:\Wasweißich\Ordnername_%date%" anzugeben.

greetz André
ITSchlumpf
ITSchlumpf 04.06.2012 um 16:20:33 Uhr
Goto Top
Hallo Mordschaf,

kannst du vll mal dein bestehendes Skript posten, dann kann man dir vll sagen wo dein Fehler ist.

Gruß
Schlumpf
bastla
bastla 04.06.2012 um 16:37:57 Uhr
Goto Top
@skye
... wobei ein "\" am Ende allerdings sehr zu enpfehlen wäre (da damit vorgegeben wird, dass das Ziel ein Verzeichnis ist) ...

Grüße
bastla
Skyemugen
Skyemugen 04.06.2012 um 16:44:12 Uhr
Goto Top
Aloha bastla,

da ich die Zeile des TE nicht kenne, ging ich erst einmal davon aus, dass er /I dabei hat.

greetz André
bastla
bastla 04.06.2012 um 16:49:37 Uhr
Goto Top
[OT] @skye
Wie? Du gehörst auch zu aussterbenden Stamm der Optimisten? face-wink

Grüße
bastla
[/OT]
bandit76
bandit76 04.06.2012 um 22:16:46 Uhr
Goto Top
Hi,
falls du eine möglichkeit suchst das aktuelle Datum in eine Umgebungsvariable zu schreiben -siehe folgendes Beispiel:

FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%d

Das Ergebnis steht in der Variable %CDATE%
unter umständen musst du bei englisch sprachigen Windows das Trennzeichen ändern (delims)
bastla
bastla 04.06.2012 aktualisiert um 22:39:17 Uhr
Goto Top
Hallo bandit76 und willkommen im Forum!

Wo hast Du denn die Zeile ausgegraben? Das letzte Mal, dass vor dem Datum noch der (abgekürzte) Wochentag ausgegeben wurde, war doch unter W2000 ... face-wink

Die Schreibweise "JJJJ-MM-TT" wäre sinnvoller und (auch unter W2000 face-wink) eher so zu erreichen:
set "CDATE=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
Grüße
bastla
bandit76
bandit76 05.06.2012 um 00:14:25 Uhr
Goto Top
ist bei mir im Produktiveinsatz und läuft unter Win7 und Windows 2008R2 Server bestens (und auch unter XP)

aber dein weg funktioniert natürlich auch!
bastla
bastla 05.06.2012 um 09:24:00 Uhr
Goto Top
Hallo bandit76!

XP Pro SP3 dt:
D:\>date /t
05.06.2012

D:\>FOR /F "tokens=1,2,3,4 delims=/. " %a in ('date/T') do set CDATE=%c-%b-%d

D:\>set CDATE=2012-06-

D:\>
Grüße
bastla
das.Mordschaf
das.Mordschaf 05.06.2012 aktualisiert um 09:58:05 Uhr
Goto Top
also versteh ich das richtig, mit:

FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%d

setze ich nur die Variable fürs Datum, die ich dann nach belieben einsetzen kann?
meine Batch sieht nämlich ungefähr so aus

start
xcopy C:\Programm\ort1 E:\Sicherungen\%date%\/E /S /I
xcopy C:\Programm\ort2 E:\Sicherungen\%date%\/E /S /I
end

könnte/müßte ich jetzt %date% durch %cdate% erstezen?
bitte nicht lachen, wenn ich jetzt totale Grütze geschrieben habe face-wink
bastla
bastla 05.06.2012 aktualisiert um 13:00:21 Uhr
Goto Top
Hallo das.Mordschaf!
könnte/müßte ich jetzt %date% durch %cdate% erstezen?
Soferne in %cdate% bei Dir der gewünschte Inhalt steht (meine Zweifel und den Alternativvorschlag habe ich oben angemerkt) kannst Du das machen ...
Willst Du übrigens tatsächlich "alles in einen Topf werfen" (also alle kopierten Dateien im Ordner "E:\Sicherungen\%date%" sammeln) oder sollen doch auch noch Unterordner für "ort1" und "ort2" verwendet werden? In diesem Fall müsstest Du diese natürlich im Zielpfad mit angeben:
set "Ziel=E:\Sicherungen\%cdate%"  
xcopy /e "C:\Programm\ort1" "%Ziel%\ort1\"  
xcopy /e "C:\Programm\ort2" "%Ziel%\ort2\"  
Grüße
bastla
das.Mordschaf
das.Mordschaf 05.06.2012 aktualisiert um 10:56:28 Uhr
Goto Top
oki doki,
herzlichsten Dank erstmal
ich probier das jetzt mal aus und habe so die Vermutung, das wir uns in nicht allzu ferner Zukunft wiederlesen face-wink
das.Mordschaf
das.Mordschaf 05.06.2012 um 11:23:15 Uhr
Goto Top
wie angedroht face-wink
also meine Batch sieht jetzt folgendermaßen aus

start
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%d
xcopy C:\test2 C:\test\%cdate%/E /S /I
xcopy C:\test3 C:\test\%cdate%/E /S /I
end

klappt auch alles, bis auf den Ordner der erstellt wird, der heißt "2012-06-" und ich hätte gerne noch den Tag
...bestimmt was ganz einfaches, aber ich seh es leider nicht
bastla
bastla 05.06.2012 aktualisiert um 11:30:21 Uhr
Goto Top
Hallo das.Mordschaf!
...bestimmt was ganz einfaches, aber ich seh es leider nicht
Um mich mal selbst zu zitieren:
Soferne in %cdate% bei Dir der gewünschte Inhalt steht (meine Zweifel und den Alternativvorschlag habe ich oben angemerkt)
Ok, Letzteren etwas weiter oben ... face-wink

Abgesehen davon würde ich im Zweifelsfall den Zielpfad nur einmal ermitteln und einer Variablen zuweisen (nicht ganz so weit oben face-wink) ...

... und BTW: Wenn Du "/E" verwendest, brauchst Du kein "/S" mehr (und der "\" am Ende des Zielpfades macht "/I" überflüssig).

Grüße
bastla
das.Mordschaf
das.Mordschaf 05.06.2012 um 11:36:20 Uhr
Goto Top
ui ui ui....
die Variable wird doch mit
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%d
ermittelt/erstellt, ja?
ja face-big-smile
und den Zielpfad muß ich doch (in diesem Fall) zweimal angeben, damit Batchi auch weiß wohin der ganze Krempel soll.
Wie gesagt er kopiert mir alles rein, genauso wie es sein soll, nur das der erstellte Ordner nicht ordentlich bezeichnet ist (2012-06- statt 2012-06-05).
bastla
bastla 05.06.2012 aktualisiert um 14:32:05 Uhr
Goto Top
Hallo das.Mordschaf!
die Variable wird doch mit
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%d
ermittelt/erstellt, ja?
Nicht notwendiger Weise - so geht es auch:
set "CDATE=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
und den Zielpfad muß ich doch (in diesem Fall) zweimal angeben,
Kannst Du so oft wie Du willst - aber ihn mehrmals "zusammenzubauen" sparst Du Dir mit der Verwendung einer Variablen - ein Beispiel steht (schon länger face-wink) hier ...

Grüße
bastla

P.S.: Aber falls Dir sehr an der "for"-Variante liegen sollte, dann aber richtig:
FOR /F "tokens=1-3 delims=. " %%a in ('date/T') do set "CDATE=%%c-%%b-%%a"
das.Mordschaf
das.Mordschaf 05.06.2012 um 13:23:37 Uhr
Goto Top
Klasse! Danke,
funktioniert jetzt alles prima, die Sache mit dem Datum. face-big-smile
Besten Dank noch mal an alle,
aber speziell an BASTLA

..bis die Tage

das.Mordschaf