fhilsenbek
Goto Top

Batch - Verzeichnisname anhand vom Datum auslesen

Hi zusammen,

hab ein kleines oder größeres Problem.

Folgende Situation:

Datenbankserver mit Windows 2003 Standard R2 (keine SQL Datenbank sondern eine 4D Datenbank)

Nachts läuft ein Script welches den 4D Server beendet und dann eine Sicherung macht (per Batch).
Bei dieser Sicherung wird unter der Festplatte E: im Verzeichnis Bandsicherung ein neues Verzeichnis mit dem aktuellem Tagesdatum und der Uhrzeit angelegt, hier ist auch noch ein kleiner Fehler drin der uns aber weiterhin nicht stört.

Mittags um kurz nach 12 läuft ein anderes Script welches genau dieselbe funktion hat wie nachts das.

Struktur sieht wie folgt aus:

20081029_1225
20081029_4240
20081030_1225
20081030_4240

(Der Fehler welcher oben erwähnt wurde ist das das Verzeichnis 4240 am Ende heißt, und nicht 0420, ist aber nicht weiter schlimm für uns wie gesagt)

Wenn die Sicherung erfolgt ist wird durch die Batch Datei der 4D Server gestartet.

Nun möchten wir z. B. um 5:30 morgens ein zusätzliches Script laufen lassen welches anhand vom Datum und Uhrzeit des Verzeichnisses die Daten auf einen anderen Server kopiert.

Weiß jemand von euch ob es möglich ist den Verzeichnisnamen auszulesen der als letztes erstellt wurde.

Hier das Script welches Nachts ausgeführt wird zum Sichern der Datenfiles:


rem @echo off
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%
set mytime=%TIME::=%
set mytime=%mytime:~1,4%
set archiv=%mydate%_%mytime%
cd\
mkdir e:\Bandsicherung\%archiv%
cd\
cd Bandsicherung
cd %archiv%
mkdir P4_Daten
cd\
cd Bandsicherung
cd %archiv%
mkdir P4_Enterprise

robocopy e:\P4_Daten\ e:\Bandsicherung\%archiv%\P4_Daten\ /MIR /LOG+:"e:\robocopy\logfile\ber_dat_%archiv%.txt"
robocopy e:\P4_Enterprise\ e:\Bandsicherung\%archiv%\P4_Enterprise\ /MIR /LOG+:"e:\robocopy\logfile\ber_ent_%archiv%.txt"

goto START_P4

:START_P4

cd e:\P4_Enterprise\
cd Server
"P4_Enterprise Server.exe"

Ist einfach gehalten und funktioniert auch soweit, wir haben halt nur das Problem das wir diese Daten nicht auf einen anderen Server automatisch bekommen, da wenn wir den Kopiervorgang hinter den ersten setzen das ganze sich von 30 Minuten auf 4 Stunden aufbläht was die Kopierzeit angeht. Der Server muss halt um 6:30 wieder laufen, deshalb wollen wir das ganze in einem 2.ten Script machen.

Vielen Dank schonmal für die Hilfe

Florian

Content-Key: 100641

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

Printed on: April 18, 2024 at 22:04 o'clock

Member: Biber
Biber Oct 30, 2008 at 15:13:28 (UTC)
Goto Top
Moin fhilsenbeck,

den zuletzt angelegt Ordner in einem bestimmten Verzeichnis solltest Du so bekommen:
[zum Test am CMD-Prompt]
for /f %i in ('dir /b /A:d /tc /o:d X:\BestimmterOrdner\*' ) do set "neuesterOrdner=%i"
[im Batch jeweils 2 %-Zeichen stat eines vor den Zählvariablen]

Grüße
Biber
Member: fhilsenbek
fhilsenbek Oct 30, 2008 at 15:39:18 (UTC)
Goto Top
Hi Biber,

zuerstmal danke für die schnelle Hilfe.

Hab das jetzt mal grad testen wollen, allerdings hab ich da ein kleines Problem mit der Batch.

Folgende Batch soll dann ausgeführt werden, allerdings übernimmt er den Inhalt von "%%i" beim xcopy Befehl nicht und kopiert deshalb dann auch nichts.

Hab schon ein bisschen was ausprobiert, mit und ohne "" im xcopy Befehl, hilft aber nix.
Weißt du was ich hier falsch mache

for /f %%i in ('dir /b /A:d /tc /o:d d:\bandsicherung\*' ) do set "neuesterOrdner=%%i"
pause
xcopy d:\bandsicherung\"%%i"\ d:\test\ /e
pause

Danke und Gruß

Florian
Member: Biber
Biber Oct 30, 2008 at 15:59:55 (UTC)
Goto Top
Moin fhilsenbek,

die Lauf-Variable %%i ist nur gültig bzw existent, solange die FOR-Anweisung ausgeführt wird.
Deshalb habe ich ja den letzten Wert von %%i in eine Dauerhafte Variable neuesterOrdner gerettet.

Verwende also in dem Xcopy-Geraffel statt "%%i" die "%neuesterOrdner%".

Grüße
Biber
Member: fhilsenbek
fhilsenbek Oct 30, 2008 at 16:23:05 (UTC)
Goto Top
Hi Biber,

vielen vielen Dank, funktioniert jetzt alles.

Beste Grüße

Florian
Member: bastla
bastla Oct 30, 2008 at 19:56:33 (UTC)
Goto Top
Hallo fhilsenbek!

Vielleicht kannst Du ja das noch brauchen:
set mytime=%TIME::=%
set /a mytime=10000 + %mytime:~,4%
set mytime=%mytime:~-4%
Grüße
bastla
Member: fhilsenbek
fhilsenbek Oct 31, 2008 at 10:57:38 (UTC)
Goto Top
Hi bastla,

vielen Dank, werd ich gleich nächste Woche mal ausprobieren.

Grüße

Florian
Member: fhilsenbek
fhilsenbek Oct 31, 2008 at 12:33:14 (UTC)
Goto Top
Hi,

kam doch jetzt schon dazu, klappt wunderbar, hab die Uhr einfach mal umgestellt zum testen face-smile

Danke nochmals

Gruß

Florian