sebattosai
Goto Top

Batch Datei Backup einer Datei und Wochentag hinzufügen im Dateinamen..WIE

guten tag,

ich habe folgenden auftrag: eine datenbank datei soll gesichert werden.

das ganze soll über eine batch datei ablaufen und jedes mal soll der jeweilige wochentag an dateinamen angehängt werden. das ganze läuft von Mo - Fr und in der nächsten woche sollen diese ohne nachfrage wieder überschrieben werden, als neues backup.

ich kenn mich garnicht damit aus. hab google gefragt aber dort kommen keine lösungen die mir helfen den wochentag richtig einzufügen.

hatte vor das ganze mit xcopy zu bewerkstelligen, aber wie gesagt: wochentag muss auch dann daran


kann mir jmd helfen bitte?


vielen dank


mtg

Content-ID: 82173

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

Ausgedruckt am: 14.11.2024 um 23:11 Uhr

miniversum
miniversum 03.03.2008, aktualisiert am 18.10.2012 um 18:35:27 Uhr
Goto Top
Wie man den Wochentag ermittelt findest du hier:
Wochentag per Batch ermitteln

Daraus kann man dann weiter folgendes machen (Ungetestet, Annahme: Variable mit Wochentag heißt %wt%):
 set "quelle=C:\verzeihnis der zu sichernden dateien"  
set "ziel=C:\sicherungsverzeichnis"  

FOR /F "delims=" %%i in ('dir /B /a-d "%quelle%"') do copy /Y "%%~fi" "%ziel%\%%~ni%wt%%%~xi"  
stbewo
stbewo 03.03.2008 um 11:44:07 Uhr
Goto Top
Hi,

mit

@echo off
for /F "tokens=1-5 skip=1 delims= " %%a in ('now.exe') do (
echo Wochentag =%%a Monat = %%b Datum = %%c Uhrzeit = %%d Jahr = %%e
xcopy C:\DB\Datenbank.db c:\backup\%%a-Datenbank.db
)
pause

und dem NOW.EXE Programm aus den Reskit Tools kannst Du den Wochentag extrahieren.

Gruß
Stefan
sebattosai
sebattosai 03.03.2008 um 11:58:26 Uhr
Goto Top
hallo

vielen dank für die hilfe, aber ich versteh nur kryptische zeichen bisher...könntet ihr vllt kommentieren was die einzelnen zeilen machen?

danke
miniversum
miniversum 03.03.2008 um 12:12:48 Uhr
Goto Top
Ich kommentiere/erkläre mal meinen Teil:

Zuerst werden den Variabeln %quelle% und %ziel% das Quell- und Zielverzeichniss zugewiesen.
set "quelle=C:\verzeihnis der zu sichernden dateien"
set "ziel=C:\sicherungsverzeichnis"

Dashier zerlegen ich jetzt mal damit es leichter ist zu erklären.
FOR /F "delims=" %%i in ('dir /B /a-d "%quelle%"') do copy /Y "%%~fi" "%ziel%\%%~ni%wt%%%~xi"

Ich lasse mir eine Liste erstellen mit allen Dateien im Quellverzeichnis
dir /B /a-d "%quelle%"
Diese Liste gehe ich einzeln durch
FOR /F "delims=" %%i in ('dir /B /a-d "%quelle%"') do ...
und kopiere jede Datei (mit überschreiben)
copy /Y
von der quelle
"%%~fi"
ins Ziel. Im Ziel werden sie gleich umbenant (das macht der Copy Befehl gleich mit) in: DateinamenWochentag.Endung
"%ziel%\%%~ni%wt%%%~xi"

Wie das genau mit dem %%~ni und %%~xi funktioniert kanst du in der Hilfe zum Forbefehl ganz am Ende nachlesen (in der Eingabeaufforderung "for /?" eingeben).

miniversum
Biber
Biber 03.03.2008 um 12:23:25 Uhr
Goto Top
...und falls ich auch helfen darf:
ich habe folgenden auftrag: eine datenbank datei soll gesichert werden.
das ganze soll über eine batch datei ablaufen....
ich kenn mich garnicht damit aus...

Das heißt übersetzt: Du musst Dich damit auseinandersetzen.
Und "Auftrag" heißt: Es ist Dein evtl. sogar bezahlter Job.

Ich finde die Hinweise auf die -nicht schlechten und nicht unverständlichen- Hilfen zu FOR am CMD-Prompt richtig und kann nicht erkennen, dass Du Dich um eigenes Erarbeiten bemühst, wenn innerhalb von Minuten nach Posten einer Fertiglösung gleich die Bitte um Erklärung kommt.

Wir helfen hier gerne, wenn es irgendwo hakt, aber es sollte zumindest erkennbar sein, dass ein eigener Versuch vorausgegangen ist.

Grüße
Biber
sebattosai
sebattosai 03.03.2008 um 12:31:41 Uhr
Goto Top
hi biber,

natürlich ist es meine arbeit. aber ich bat ja um hilfe wie sowas gehen kann.

ich hatte schon versucht mit xcopy

allerdings fehlt mir halt nur das mit dem wochentag und soweit ich das in den anderen threads lesen konnte würde sowas nicht gehen. daher hab ich mal versucht etwas konkreter in dem zusammenhang zu fragen..


mtg
bastla
bastla 03.03.2008 um 12:48:49 Uhr
Goto Top
@stbewo

Um nicht ein externes Tool voraussetzen zu müssen, vielleicht einfach so:
set "GWD=%temp%\GetWeekday.vbs"  
echo WScript.Echo WeekdayName(Weekday(Date))>%GWD%
for /f %%i in ('cscript //nologo %GWD%') do set WoTag=%%i  

Damit bist Du dann noch nicht einmal von der in der Systemsteuerung eingestellten Sprache / Datumsformatierung abhängig.

Grüße
bastla
Biber
Biber 03.03.2008 um 14:00:20 Uhr
Goto Top
Na ja,

um es abschließend zu klären:
Mit native Batch geht es eigentlich nicht.
Weil es dort keine "Datentyp Datum"-Unterstützung gibt. Ende.

Workarounds
a) entweder aus den Trümmern des Datumstextes, z.B. "02.03.2008" Zahlenwerte bilden und selbst eine Berechnungsformel für Wochentage nachkaspern, die Papst Gregor II. und Johannes Heesters gemeinsam entwickelt haben.
-oder-
b) den Wochentags-Textstring von Now.exe/Robocopy.exe o.ä. liefern lassen, aus einer Ausgabezeile rausfieseln und mit messerscharfer Logik von "Mon" auf "Montag" oder von "Thu" auf "Thonnerstach" schliessen(s.o.)
c) oder jemand fragen, der etwas davon versteht, i.e. eine Skriptsprache, die mit Datumswerten "rechnen" kann wie z.b. VBSkript und der aus dem Batch heraus einen Einzeiler an den Hals werfen:

::----Getwochentach.cmd
@echo off & setlocal
Set tmpvbs="%temp%\cwd.vbs"  
Echo Wscript.echo Array("Sonntag","Montach", "Dienstag","Mittwoch", "Donnerstag", "Freitag", "Samstag")(weekday(wscript.Arguments(0))-1)>"%tmpvbs%"  
For /f %%i in ('cscript //nologo %tmpvbs% %date%') do @echo [DEMO] %date%: set "Wochentach=%%i"   

Output
>e:\schnipsel\GetWochentach.cmd
[DEMO] 03.03.2008: set "Wochentach=Montach"  

Beispiel zu a) und b) findest Du ebenfalls im Forum.

Eine Musterlösung gibt es dafür nicht -- solange Du den Leuten nicht verständlich machen kannst, dass "Wochentags-Ordner" bei M$ nicht vorgesehen sind trotz 4x neuer Hotfixes täglich, solange musst Du individuelle Workarounds zusammenstoppeln.

Oder zumindest Copy & Pasten.

Grüße
Biber
[Edit] @bastla
Damit bist Du dann noch nicht einmal von der in der Systemsteuerung eingestellten Sprache / Datumsformatierung abhängig.
Mit meiner Variante kannst Du es sogar auf Oldenburger Platt oder Imbissbudendeutsch ausgeben... face-wink
Na gut, der Name der WeekdayName()-Funktion ist mir Montag morgens noch ganz fremd...
[/Edit]
bastla
bastla 03.03.2008 um 15:02:44 Uhr
Goto Top
@Biber

Mit meiner Variante kannst Du es sogar auf Oldenburger Platt oder Imbissbudendeutsch ausgeben...
Könntest Du erstere Fassung noch posten? face-wink

... der Name der WeekdayName()-Funktion ist mir Montag morgens noch ganz fremd...
Abfallprodukt der "Scripting Games" - war mir vorher auch noch nie aufgefallen ...

Grüße
bastla

P.S.: Die von Dir verwendete Schreibweise für den Array-Index gefällt mir sehr gut (kannte ich bis vor kurzem auch noch nicht) ...