shitzovran
Goto Top

Per Skript Ordner kopieren und umbenennen (Monat)

Brauche ein Skript, dass mir einen Ordner kopiert und ihn dann umbenennt aber mit Monatsbezeichnung

Also ich hab in einem verzeichnis ein Ordner "Aktuell" liegen, in diesem Ordner wird eine MOnatssicherung der SQL Datenban erstellt... zum Ende des Monats, soll dieser Ordner kopiert werden, und umbenannt werdn in den Jeweiligen Monat...

Also das denn zum beispiel jetzt anfang Mai nicht mehr nur
'F:\_BACKUP_SQL_MONAT\AKTUELL' existiert, sondern zusätzlich der Ordner 'F:\_BACKUP_SQL_MONAT\APRIL' indem dann die Sicherung liegt, die den April über Aktuell war

wenn das überhaupt automatisiert funktioniert, dass er erkennt welchen MOnat wir haben & dementsprechend der Ordner benannt wird


[Edit Biber] verschoben von "BASIC" nach "Batch & Shell". War sicherlich ein Tipp/Klickfehler. [/Edit]

Content-Key: 114983

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
bastla Apr 29, 2009 at 15:21:17 (UTC)
Goto Top
Hallo ShitzOvran!

Gibt es einen speziellen Grund, diese Frage im Bereich "BASIC" zu stellen? Für diesen Zweck würde ich einen Batch verwenden - etwa so:
@echo off & setlocal
set "Pfad=F:\_BACKUP_SQL_MONAT"  
set "Akt=AKTUELL"  

set "M=%date:~-7,2%"  
set "Monat="  
if "%M%"=="01" set "Monat=Januar"  
:: ergänzen
if "%M%"=="04" set "Monat=April"  
:: ergänzen
if "%M%"=="12" set "Monat=Dezember"  
if not defined Monat echo Monat konnte nicht ermittelt werden! & goto :eof

if exist "%Pfad%\%Monat%\" rd /s /q "%Pfad%\%Monat%\"  
xcopy /e "%Pfad%\%Akt%" "%Pfad%\%Monat%\"  
Da Du ausgeschriebene Monatsnamen verwenden willst (für die abgekürzte Variante könnte zB auf "now.exe" zurückgegriffen werden), erfolgt die entsprechende Zuordnung zum aus dem Systemdatum ausgelesenen (zweistelligen) Monatswert durch die oben angedeutete (noch zu ergänzende) Reihe von "if"-Statements.

Alternativ (zu den Zeilen 5 bis 12) könnte der Monatsname auch zB so ermittelt werden:
set /a M=1%date:~-7,2%-100
if %M% lss 0 echo Monat konnte nicht ermittelt werden! & goto :eof
if %M% gtr 12 echo Monat konnte nicht ermittelt werden! & goto :eof
for /f "tokens=%M%" %%i in ("Januar Februar März April ... Dezember") do set "Monat=%%i"  
Danach (ab Zeile 14) wird ein ev bereits (aus dem Vorjahr) vorhandener "Monats"-Ordner gelöscht und dann kopiert.

Grüße
bastla
Mitglied: 76109
76109 Apr 29, 2009 at 19:41:14 (UTC)
Goto Top
Hallo bastla,

vielleicht währe ein VB-Script etwas einfacher, in dem das Longdatum nur gesplittet werden muss.

x = FormatDateTime(Date, vbLongDate)   ' x =  "Mittwoch, 29. April 2009"  

Gruß Dieter
Member: bastla
bastla Apr 29, 2009 at 19:46:23 (UTC)
Goto Top
@76109
VBS ist natürlich bei "Datumsangelegenheiten" immer eine Option - obwohl sich hier dann wohl eher
x = MonthName(Month(Date))
anbieten würde.

Allerdings ist in diesem Fall der mit Batch zu treibende Aufwand mE durchaus überschaubar ...

Grüße
bastla
Mitglied: 76109
76109 Apr 29, 2009 at 19:49:20 (UTC)
Goto Top
Hallo bastla,

sorry, verlesenface-smile

Gruß Dieter