Via batch das aktuelle Datum minus 1nem Monat als Dateinamen ausgeben
Hallo zusammen,
bitte net gleich schlagen, habe gegoogelt aber bin net schlau geworden. würde mich über hilfe freuen.
vielen dank im voraus.
also ich habe ein script welches mir dateien zippt. der dateiname wird mit dem aktuellen datum versehen " D1AMG_02-2011.zip ". dies funktioniert.
ich hätte nur gern das das aktuelle datum minus 1nem monat als dateiname angezeigt wird.
rem @echo off
set "Datum=%date:~-7,2%-%date:~-4%"
for %%i in (X:\SicherungDB2\D1AMG\*.001) do C:\Programme\7-Zip\7z.exe a "D1AMG_%Datum%.zip" "%%i"
bitte net gleich schlagen, habe gegoogelt aber bin net schlau geworden. würde mich über hilfe freuen.
vielen dank im voraus.
also ich habe ein script welches mir dateien zippt. der dateiname wird mit dem aktuellen datum versehen " D1AMG_02-2011.zip ". dies funktioniert.
ich hätte nur gern das das aktuelle datum minus 1nem monat als dateiname angezeigt wird.
rem @echo off
set "Datum=%date:~-7,2%-%date:~-4%"
for %%i in (X:\SicherungDB2\D1AMG\*.001) do C:\Programme\7-Zip\7z.exe a "D1AMG_%Datum%.zip" "%%i"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162279
Url: https://administrator.de/forum/via-batch-das-aktuelle-datum-minus-1nem-monat-als-dateinamen-ausgeben-162279.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
33 Kommentare
Neuester Kommentar
Aloha,
nun, da wir gerne das „wie-schaffe-ich-es-selbst” fördern, verlinke ich dir mal nur diesen Thread, wo eigentlich schon alles drin ist, was du brauchen wirst (nämlich am Einfachsten ein temporäres VBScript).
Was mich nur wundert: Momentan gibst du nur MM-JJJJ aus, willst aber doch wirklich schon den Tag-1, ja? =)
greetz André
nun, da wir gerne das „wie-schaffe-ich-es-selbst” fördern, verlinke ich dir mal nur diesen Thread, wo eigentlich schon alles drin ist, was du brauchen wirst (nämlich am Einfachsten ein temporäres VBScript).
Was mich nur wundert: Momentan gibst du nur MM-JJJJ aus, willst aber doch wirklich schon den Tag-1, ja? =)
greetz André
1 minus 1 = 0, was aber falsch wäre, da Januar minus 1 = Dezember wäre also 12, was mit batch so aber nicht geht (daher
auch VBS) ;)
greetz André
auch VBS) ;)
greetz André
Hallo Andrè
hier mal ein Beispiel für Dos
@echo off & setlocal
set currentMONTH=%date:~3,2%
set currentYear=%date:~6,4%
set /a "lastMONTH=%currentMONTH%-1"
set /a "lastYear=%currentYear%-1"
if %lastMonth% == 0 Goto Ausgabe1
if not %lastMonth% == 0 Goto Ausgabe2
:Ausgabe1
echo 12_%lastYear%
pause
:Ausgabe2
echo %lastMONTH%_%currentYear%
pause
Hallo Cali169
dein Set Datum schreibst du dorthin wo mein Echo steht und benutzt dann weiter deine Variable.
Hier das veränderte Script:
@echo off & setlocal
set currentMONTH=%date:~3,2%
set currentYear=%date:~6,4%
set /a "lastMONTH=%currentMONTH%-1"
set /a "lastYear=%currentYear%-1"
if %lastMonth% == 0 Goto Ausgabe1
if not %lastMonth% == 0 Goto Ausgabe2
:Ausgabe1
set myDate=01_12_%lastYear%
echo %myDate%
goto myRename
:Ausgabe2
set myDate=01_%lastMONTH%_%currentYear%
echo %myDate%
goto myRename
:myRename
ren test.bat "%myDate%.bat"
dein Set Datum schreibst du dorthin wo mein Echo steht und benutzt dann weiter deine Variable.
Hier das veränderte Script:
@echo off & setlocal
set currentMONTH=%date:~3,2%
set currentYear=%date:~6,4%
set /a "lastMONTH=%currentMONTH%-1"
set /a "lastYear=%currentYear%-1"
if %lastMonth% == 0 Goto Ausgabe1
if not %lastMonth% == 0 Goto Ausgabe2
:Ausgabe1
set myDate=01_12_%lastYear%
echo %myDate%
goto myRename
:Ausgabe2
set myDate=01_%lastMONTH%_%currentYear%
echo %myDate%
goto myRename
:myRename
ren test.bat "%myDate%.bat"
Aloha Ralph,
nimm es mir nicht übel aber ich finde derartige „Basteleien” unschön (nicht nur für's Auge) und habe lieber ein Fundament, was alles erfüllt und mehrfach einsetzbar ist (mach das mal mit Tage, viel Spaß mit batch ... ich nutze das VBS auch für Tage und muss dann nur einen Buchstaben ändern).
greetz André
nimm es mir nicht übel aber ich finde derartige „Basteleien” unschön (nicht nur für's Auge) und habe lieber ein Fundament, was alles erfüllt und mehrfach einsetzbar ist (mach das mal mit Tage, viel Spaß mit batch ... ich nutze das VBS auch für Tage und muss dann nur einen Buchstaben ändern).
greetz André
Hallo Andrè
ich persönlich finde batch dateien auch nicht so berühmt und arbeite lieber mit VBS oder .net aber wenn ausdrücklich nach batch gefragt wird kann man sich ja mal verbiegen.
Wir wissen ja nicht was dahintersteckt und wofür er es benötigt.
Wie gesagt die Wahl meiner Mittel wäre auch VBS.
LG Ralph4
ich persönlich finde batch dateien auch nicht so berühmt und arbeite lieber mit VBS oder .net aber wenn ausdrücklich nach batch gefragt wird kann man sich ja mal verbiegen.
Wir wissen ja nicht was dahintersteckt und wofür er es benötigt.
Wie gesagt die Wahl meiner Mittel wäre auch VBS.
LG Ralph4
Aloha,
dann ignorieren, nein optimieren wir es hier bei solchen Sachen gerne *gg* bzw. verschleiern alles ins batch ;)
greetz André
P.S.: mit code-tags sind ebenso schöner für's Auge =)
edit: Warum machst du nicht wenn dann else statt if not? Warum zweimal dasselbe abfragen?
dann ignorieren, nein optimieren wir es hier bei solchen Sachen gerne *gg* bzw. verschleiern alles ins batch ;)
greetz André
P.S.: mit code-tags sind ebenso schöner für's Auge =)
edit: Warum machst du nicht wenn dann else statt if not? Warum zweimal dasselbe abfragen?
if %lastMonth%==0 (Goto Ausgabe1) else (Goto Ausgabe2)
moin,
das tut ja richtig weh......
@sky - "Basteln" darf und macht hier nur der Bastla - auch wenn das von euch beiden gut gemeint war, aber hier in dem Forum so eine Batch als Lösung zu präsentieren, das ist pervers
Gruß
das tut ja richtig weh......
setlocal
set MONTH=%date:~3,2%
set Year=%date:~6,4%
if %MONTH% gtr 2 set /a "MONTH=%MONTH%-1"
if %MONTH%==1 set /a "MONTH=+11" & set /a "Year=-1"
echo %MONTH%_%Year%
pause
@sky - "Basteln" darf und macht hier nur der Bastla - auch wenn das von euch beiden gut gemeint war, aber hier in dem Forum so eine Batch als Lösung zu präsentieren, das ist pervers
Gruß
Aloha T-Mo!
Mal sachte, ja ... ich habe hier nichts perverses verbreitet nur den üblichen VBS-Kram, den man gerne nutzt (kam damals von bastla).
Dieses sonstige Gefummel habe ich mir gar nicht erst groß angeguckt es schreckte einfach ab. Ich bleibe lieber bei never change a running system aber reicht ja, wenn du dir die Mühe mit dem Augenkrebs angetan hast und was rumgebätschelt hast :P
greetz André
zieh mich da nicht mit in den Sumpf rein
Mal sachte, ja ... ich habe hier nichts perverses verbreitet nur den üblichen VBS-Kram, den man gerne nutzt (kam damals von bastla).
Dieses sonstige Gefummel habe ich mir gar nicht erst groß angeguckt es schreckte einfach ab. Ich bleibe lieber bei never change a running system aber reicht ja, wenn du dir die Mühe mit dem Augenkrebs angetan hast und was rumgebätschelt hast :P
greetz André
zieh mich da nicht mit in den Sumpf rein
[OT] @t-mo
Nichts gegegen deinen Algorithmus, aber drei bis vier Nachfragen hätte ich doch noch ...
a) Wenn doch diese beide Zeilen alle Zeilen sind, in denen der Vormonat "berechnet" werden soll...
Habe ich dann mit der zweiten Zeile einen %MONTH%-Wert von 1 und mit der Zeile darüber alle %MONTH%e mit 3 und größer berücksichtigt?
Fehlt da nicht der Februar??
b) Kann denn wohl, wenn %MONTH% ein zweistelliger String ist wie hier
c) aber auch eine geänderte Zeile
d) WhoTF fällt denn auf sowas rein:
Kann ich nicht einfach sagen: Wenn "%MONTH%"=="01" Set "MONTH=12" ?? Mein' ja nur....
Hey, wenn der TO irgendein Zivi ist, der mit euren Batch-Datumsberechnungen die Essensausgabe in einer Seniorenresidenz fernsteuert....
Und man merkt es wahrscheinlich erst nach Wochen...
Grüße
Biber
[/OT]
Nichts gegegen deinen Algorithmus, aber drei bis vier Nachfragen hätte ich doch noch ...
a) Wenn doch diese beide Zeilen alle Zeilen sind, in denen der Vormonat "berechnet" werden soll...
if %MONTH% gtr 2 set /a "MONTH=%MONTH%-1"
if %MONTH%==1 set /a "MONTH=+11" & set /a "Year=-1"
if %MONTH%==1 set /a "MONTH=+11" & set /a "Year=-1"
Habe ich dann mit der zweiten Zeile einen %MONTH%-Wert von 1 und mit der Zeile darüber alle %MONTH%e mit 3 und größer berücksichtigt?
Fehlt da nicht der Februar??
b) Kann denn wohl, wenn %MONTH% ein zweistelliger String ist wie hier
set MONTH=%date:~3,2%
kann denn dieser zweistellige Wert auch gléich der Ziffer 1 sein?>if 01==1 @echo Guck ma' was ich zaubern kann....
c) aber auch eine geänderte Zeile
if "%MONTH%" gtr "01" set /a "MONTH=%MONTH%-1"
würde doch nur die linke Seite, den IF Vergleich hinbekommen. Rechts davon klappt es nur bis zum September..>if "09" gtr "01" set /a 09-1
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
d) WhoTF fällt denn auf sowas rein:
if %MONTH%==1 set /a "MONTH=+11" ....
--> Wenn %MONTH% = 1 (oder 01) ist, dann muss ich 11 addieren lassen von einer Rechenmaschine??? Ist das die Message? ;-9Kann ich nicht einfach sagen: Wenn "%MONTH%"=="01" Set "MONTH=12" ?? Mein' ja nur....
Hey, wenn der TO irgendein Zivi ist, der mit euren Batch-Datumsberechnungen die Essensausgabe in einer Seniorenresidenz fernsteuert....
Und man merkt es wahrscheinlich erst nach Wochen...
Grüße
Biber
[/OT]
moin mädelz..
ich hatte ursprunglich noch ein "ungetestet" unter dem Schnippsel und wenn ich mir das zusammengekürzte und von mir im Hauruckverfahren zurechtgestutzte Ralfscript jetzt genauer ansehe....
...au Backe
@andre
[/OT]
gruß
ich hatte ursprunglich noch ein "ungetestet" unter dem Schnippsel und wenn ich mir das zusammengekürzte und von mir im Hauruckverfahren zurechtgestutzte Ralfscript jetzt genauer ansehe....
...au Backe
Fehlt da nicht der Februar??
Si Senôr - mindestens -@andre
Mal sachte, ja ... ich habe hier nichts perverses verbreitet
Die Zeile bezog sich auf das unschöne Script von Ralf und deinen Kommentar "gebastelt" [/OT]
gruß
[OT]
Nein, das geht nicht.
Meine sofort abspulende freie Assoziationskettenrolle kommt dann sofort von "schuster" auf "bleib bei deinen "Leisten".
Und von "Leisten" komm ich natürlich sofort auf meine Praktikantinnen.
Also - rein assoziativ natürlich nur. *rotwerd*
Aber auch das ist seit heute, dem Beginn der Fastenzeit, nicht mehr angebracht.
"Schustern" entfällt also, "zusammenbraten" geht auch nicht (nix fleischliches, nix braten) ...
"Zusammenschroten" vielleicht.... nein, bei "Schrot" denke ich sofort an "Korn"...*grybel......
Melde mich, sobald mir etwas Unverfängliches einfällt...
Grüße
Biber
[/OT]
Nein, das geht nicht.
Meine sofort abspulende freie Assoziationskettenrolle kommt dann sofort von "schuster" auf "bleib bei deinen "Leisten".
Und von "Leisten" komm ich natürlich sofort auf meine Praktikantinnen.
Also - rein assoziativ natürlich nur. *rotwerd*
Aber auch das ist seit heute, dem Beginn der Fastenzeit, nicht mehr angebracht.
"Schustern" entfällt also, "zusammenbraten" geht auch nicht (nix fleischliches, nix braten) ...
"Zusammenschroten" vielleicht.... nein, bei "Schrot" denke ich sofort an "Korn"...*grybel......
Melde mich, sobald mir etwas Unverfängliches einfällt...
Grüße
Biber
[/OT]
hallo an die lieben Mitwirkenden.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
Warum sollte man sich auch auf das helfen(in welcher Form auch immer) beschränken wenn das lästern doch so schön ist.
Dass dieses Script nicht das schönste ist mal dahingestellt, es tut und wie ich der Antwort entnehme hat es der betreffenden Person so geholfen.
Da ich jetzt aber die Reaktion darauf sehe, ärgere ich mich, dass ich dachte dies ist eine etwas andere Platform als die üblichen.
Ach übrigens mit dieser Art überlegt sich jeder zweimal ob er auf eine Frage antwortet. Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Einen schönen Abend noch.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
Warum sollte man sich auch auf das helfen(in welcher Form auch immer) beschränken wenn das lästern doch so schön ist.
Dass dieses Script nicht das schönste ist mal dahingestellt, es tut und wie ich der Antwort entnehme hat es der betreffenden Person so geholfen.
Da ich jetzt aber die Reaktion darauf sehe, ärgere ich mich, dass ich dachte dies ist eine etwas andere Platform als die üblichen.
Ach übrigens mit dieser Art überlegt sich jeder zweimal ob er auf eine Frage antwortet. Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Einen schönen Abend noch.
Moin Ralph,
Als Hilfs-Moderator in diesem Skriptingbereich kann ich aber nicht "echte" Fehler so stehen lassen.
Und darauf hoffen, dass es der TO erst im Monat 09=September oder 02=Februar merkt.
Um die Ästhetik oder Eleganz ging es mir nicht - und hey! Wenn ich versuchen würde, einem Java- oder C#-Coder oder auch nur meiner Oma zu erzählen, dass es "hübsche" und "hässliche" Batchskripte gibt - die werden etwas irritiert gucken.
.
Es sollte nicht herunterputzend, nicht arrogant, nicht beleidigend sein und ja: es haben alle auch gelesen, dass der TO deinen Ansatz als Lösung für seine Frage ansieht und damit durchaus glücklich ist.
Grüße
Biber
Zitat von @Ralph4:
hallo an die lieben Mitwirkenden.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
Warum sollte man sich auch auf das helfen(in welcher Form auch immer) beschränken wenn das lästern doch so schön ist.
Jepp, den Schuh mit dem gerne Lästern zieh ich mir an, aber....hallo an die lieben Mitwirkenden.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
Warum sollte man sich auch auf das helfen(in welcher Form auch immer) beschränken wenn das lästern doch so schön ist.
Dass dieses Script nicht das schönste ist mal dahingestellt, es tut und wie ich der Antwort entnehme
hat es der betreffenden Person so geholfen.
Ja, schon.hat es der betreffenden Person so geholfen.
Als Hilfs-Moderator in diesem Skriptingbereich kann ich aber nicht "echte" Fehler so stehen lassen.
Und darauf hoffen, dass es der TO erst im Monat 09=September oder 02=Februar merkt.
Um die Ästhetik oder Eleganz ging es mir nicht - und hey! Wenn ich versuchen würde, einem Java- oder C#-Coder oder auch nur meiner Oma zu erzählen, dass es "hübsche" und "hässliche" Batchskripte gibt - die werden etwas irritiert gucken.
.
Da ich jetzt aber die Reaktion darauf sehe, ärgere ich mich, dass ich dachte dies ist eine etwas andere Platform als die üblichen.
Nein, wir sind da nicht besser und nicht anders. Aber wir arbeiten daran.Ach übrigens mit dieser Art überlegt sich jeder zweimal ob er auf eine Frage antwortet.
Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Wenn es bei dir so angekommen ist: dann von mir eine Entschuldigung im Namen aller.Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Es sollte nicht herunterputzend, nicht arrogant, nicht beleidigend sein und ja: es haben alle auch gelesen, dass der TO deinen Ansatz als Lösung für seine Frage ansieht und damit durchaus glücklich ist.
Einen schönen Abend noch.
Dir auch und nimm es nicht so persönlich.Grüße
Biber
Hallo @all!
Da das "September"-Problem (bzw eigentlich das "August"-Problem - auch "08" ist keine gültige Oktalzahl) noch nicht gelöst ist, auch von mir noch eine Variante:
Zum Testen anderer Monatswerte einfach die freie Zeile 4 dazu verwenden, zB
einzufügen ...
Grüße
bastla
Da das "September"-Problem (bzw eigentlich das "August"-Problem - auch "08" ist keine gültige Oktalzahl) noch nicht gelöst ist, auch von mir noch eine Variante:
@echo off & setlocal
set "MONTH=%date:~-7,2%"
set "YEAR=%date:~-4%"
set /a MONTH=1%MONTH%-1
set "MONTH=%MONTH:~-2%"
if %MONTH%==00 (
set "MONTH=12"
set /a YEAR-=1
)
set "Datum=%MONTH%-%YEAR%"
echo %Datum%
set "MONTH=01"
Grüße
bastla
[OT] @bastla
Hier noch mal der hoffentlich visualierte Fehler in Ralph4s Ursprungsansatz:
Grüße
Biber
[/OT]
bzw eigentlich das "August"-Problem - auch "08" ist keine gültige Oktalzahl)
Ich habe den August nicht erwähnt, weil doch dann alle Urlaub haben und dieser Batch nicht läuft... Hier noch mal der hoffentlich visualierte Fehler in Ralph4s Ursprungsansatz:
@echo off & setlocal
set currentMONTH=%date:~3,2%
REM Hier kommt ein ZWEISTELLIGER String raus "01", "02" ....."11", "12"
set currentYear=%date:~6,4%
REM .... unkritisch ..."2010"..."2011" "2012"....
set /a "lastMONTH=%currentMONTH%-1"
REM set /a "lastMONTH=01-1" ---> okay--> ergibt 0
REM set /a "lastMONTH=02-1" ---> okay--> ergibt 1
REM set /a "lastMONTH=03-1" ---> okay--> ergibt 2
...
REM set /a "lastMONTH=07-1" ---> okay--> ergibt 6
REM set /a "lastMONTH=08-1" ---> knallt, weil 08 als Oktal-Zahl interpretiert wird, probier es aus
REM set /a "lastMONTH=09-1" ---> knallt, weil 09 als Oktal-Zahl interpretiert wird, probier es aus
REM set /a "lastMONTH=10-1" ---> okay, ergibt 9
....
Grüße
Biber
[/OT]
moin,
aber jetzt mal wieder was zum Verbessern gefunden (nich lachen! is bei mir auch net anders.)
@bastla
Deine Zeile 05 würde nicht funktionieren wenn keine vornull im Monat steckt (im Sinne von Falsches Resultat)
gibts überhaubt ein %date% ohne Vornull
Gruß Phil
aber jetzt mal wieder was zum Verbessern gefunden (nich lachen! is bei mir auch net anders.)
@bastla
Deine Zeile 05 würde nicht funktionieren wenn keine vornull im Monat steckt (im Sinne von Falsches Resultat)
set /a MONTH=1%MONTH%-1
gibts überhaubt ein %date% ohne Vornull
Gruß Phil
Und die Moral von der Geschicht': „Ungetestete Skripte poste nicht ach nein, macht der bastla ja auch immer *gg* dann muss es anders heißen verweigere dich der VBS-Lösung nicht *^__^*” oder so ;)
Aber ich möchte wirklich nicht wissen, was bei Tagen in dieser Form alles zu beachten wäre *gg*
greetz André
Aber ich möchte wirklich nicht wissen, was bei Tagen in dieser Form alles zu beachten wäre *gg*
greetz André
So habe das Skript nochmal Überarbeitet und diesmal auch getestet
Hoffe ich habe alle Eventualitäten berücksichtigt.
Hoffe diesesmal auch schön genug *lach
Gruß Ralph
Hoffe ich habe alle Eventualitäten berücksichtigt.
@echo off & setlocal
set currentMONTH=%date:~4,1%
set helpObject=%date:~3,1%
set currentYear=%date:~6,4%
if %helpObject% == 1 (set /a "MONTH = %currentMONTH%+9") Else (set /a "MONTH = %currentMONTH%-1")
set /a "lastYear=%currentYear%-1"
if %Month% == 0 (set myString=12_%lastYear%) Else (set mystring=%MONTH%_%currentYear%)
echo %mystring%
pause
Hoffe diesesmal auch schön genug *lach
Gruß Ralph
@Skyemugen
Nur für den Fall des Falles: Morgiges Datum in Batchdatei bestimmen
Grüße
bastla
P.S.:
Aber ich möchte wirklich nicht wissen, was bei Tagen in dieser Form alles zu beachten wäre *gg*
Ich hätte Dich für neugieriger gehalten ...Nur für den Fall des Falles: Morgiges Datum in Batchdatei bestimmen
Grüße
bastla
P.S.:
„Ungetestete Skripte poste nicht ach nein, macht der bastla ja auch immer *gg*
Nicht immer, aber immer öfter ...
Salü,
spurtenstarten“ heute gilt "erst denken, dann lenken"
Einen schönen Abend noch.
Dito und nur eine Zeile sei mir noch erlaubt..
Gruß
Zitat von @Ralph4:
hallo an die lieben Mitwirkenden.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
hallo an die lieben Mitwirkenden.
ich finde es super wie hier auf Anfragen reagiert wir. (wenn alles vorbei ist zerupfen wir mal das was geschrieben wurde).
- It ain't over till the fat lady sings.... - bedeutet hier zu ~85%, erst wenn einer der beiden Bs aus dem B Bereich ins Horn ge
btutet hat, fällt der Vorhang
Warum sollte man sich auch auf das helfen(in welcher Form auch immer) beschränken wenn das lästern doch so schön ist.
- Was noch schöner ist - oberflächlich einen Bock in einem Skript erkannt zu haben und mindestens 3 weitere im Schnellschussverfahren aus der Hüfte zu hinterlassen
Dass dieses Script nicht das schönste ist mal dahingestellt, es tut und wie ich der Antwort entnehme hat es der betreffenden Person so geholfen.
- "Ebbe net - siehe der Kommentar von einem der beiden Besagten Bs aus dem B Bereich
Da ich jetzt aber die Reaktion darauf sehe, ärgere ich mich, dass ich dachte dies ist eine etwas andere Platform als die üblichen.
- Wie gesagt, die Party ist erst zuende, wenn die das Skript sich die Zeile @echo off auch verdient hat
Ach übrigens mit dieser Art überlegt sich jeder zweimal ob er auf eine Frage antwortet.
Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Nimms sportlich - in meiner Jugend galt der Spruch, Erst gurten, dann Sollte das die eigentliche Intension sein, kann ich nur sagen Ziel erreicht.
Einen schönen Abend noch.
- Jeder der hier versteht, dass er/Sie durch Mithilfe selber lernt - ist immer willkommen.
Gruß
Hallo liebe Script-Freunde
Sollte es Jemanden interessieren ...
Ich habe aus den hier vorliegenden Informationen ein Backupscript gefrickelt. Gilt für alle seit Datum x getouchten Dateien, bzw allen, wenn es noch kein Backup gibt. Ich habe dazu das Datum um 1 Monat zurück gedreht, Backup wird aber per Geplanten Task einmal die Woche des nachtens aufgerufen und auf einen WinXP-Rechner im Netwerk abgelegt.
Das spart Traffic, schont die Platte und geht schneller, es sei denn, es handelt sich um Dateien die andauernd alle angefasst werden und somit stehts aktuell sind.
Für Optimierungen bin ich immer zu haben.
Script läuft bei mir sehr gut, einzig eine abgebrochene Vollsicherung wird nicht erkannt. Ich schreibe nochmal um auf eine Fertigstellungs.log die es nur gibt, wenn Vollsicherung komplett durchgelaufen ist.
Wie gesagt, für Verbesserungen bin ich gern zu haben.
Gruß an Alle
Sollte es Jemanden interessieren ...
Ich habe aus den hier vorliegenden Informationen ein Backupscript gefrickelt. Gilt für alle seit Datum x getouchten Dateien, bzw allen, wenn es noch kein Backup gibt. Ich habe dazu das Datum um 1 Monat zurück gedreht, Backup wird aber per Geplanten Task einmal die Woche des nachtens aufgerufen und auf einen WinXP-Rechner im Netwerk abgelegt.
@echo off & setlocal
title Sicherung l„uft ...
set "G=%temp%\monthago.vbs"
REM Temporäres VBScript für die Datumsberechnung wird erzeugt. In diesem Falle wird der Monat um einen nach hinten geschoben (,-1,Date).
>%G% echo wscript.echo DateAdd("m",-1,Date)
for /f %%i in ('cscript //nologo %G%') do set "monthago=%%i"
del %G%
set "Datum=%monthago:~-7,2%-%monthago:~-4%"
REM Dies dient dem Anpassen der Datumsausgabe, da sie als Variable für xcopy benötigt wird in mm-dd-yy
FOR /F "tokens=1,2,3 delims=/. " %%a in ('date /t') do set FDATE=%%a
set cdate=%datum:~5,7%
set ddate=%datum:~0,2%
REM Jetzt folgt der eigentliche Backup-Vorgang - Zugriff auf Ziel sollte bestehen, ich habe an dieser stelle noch ein *net use Zielsystem /user:* hinter dem ping gesetzt.
ping -n 2 -w 20 BackupComputer >nul || goto :exit
if exist \\Zielpfad\Verzeichnis goto :Teilsicherung
if not exist \\Zielpfad\Verzeichnis goto :Vollsicherung
:Vollsicherung
xcopy C:\Test \\Zielpfad\Verzeichnis /y /k /r /i /q
goto :exit
:Teilsicherung
xcopy C:\Test \\Zielpfad\Verzeichnis /y /k /r /i /q /d:%ddate%-%FDATE%-%cdate%
:exit
Das spart Traffic, schont die Platte und geht schneller, es sei denn, es handelt sich um Dateien die andauernd alle angefasst werden und somit stehts aktuell sind.
Für Optimierungen bin ich immer zu haben.
Script läuft bei mir sehr gut, einzig eine abgebrochene Vollsicherung wird nicht erkannt. Ich schreibe nochmal um auf eine Fertigstellungs.log die es nur gibt, wenn Vollsicherung komplett durchgelaufen ist.
Wie gesagt, für Verbesserungen bin ich gern zu haben.
Gruß an Alle