Ordnerdatum soll - 3 Tage sein
Hallo miteinander,
ich habe eine Script der mir alle Dateien bis auf die in den letzen 3 Tagen sichert.
im Script wird ein Ordner angelegt, der das heutige Datum als Ordnernamen nimmt. In dem Ordner befinden sich aber alle Dateien bis auf die in den letzen 3 Tagen.
Wie ändert man im Sckript, dass der Ordnernamen 2008_02_05 (-3 Tage) = 2008_02_02 heißt?
Hier mein Script:
mfg
Matze-Pe
[Edit Biber] Auf formatiert. [/Edit]
ich habe eine Script der mir alle Dateien bis auf die in den letzen 3 Tagen sichert.
im Script wird ein Ordner angelegt, der das heutige Datum als Ordnernamen nimmt. In dem Ordner befinden sich aber alle Dateien bis auf die in den letzen 3 Tagen.
Wie ändert man im Sckript, dass der Ordnernamen 2008_02_05 (-3 Tage) = 2008_02_02 heißt?
Hier mein Script:
@echo off & setlocal
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
md D:\Sicherung\bis_%jahr%-%monat%-%tag%\
set /a MindestAlter=3
set "Quelle=C:\Sicherung\*.*"
set "Ziel=D:\Sicherung\bis_%jahr%-%monat%-%tag%\"
set "AG=%temp%\Age.vbs"
echo Sicherung: Fenster wird in wenigen Minuten automatisch geschlossen!
echo -----------------------------------------------------------------------
echo A=DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Now):WScript.Echo A>"%AG%"
for %%i in ("%Quelle%") do for /f %%a in ('cscript //nologo "%AG%" "%%i"') do if %%a gtr %MindestAlter% move "%%i" "%Ziel%\%%~ni%%~xi.txt"
del "%AG%"
mfg
Matze-Pe
[Edit Biber] Auf formatiert. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79982
Url: https://administrator.de/contentid/79982
Ausgedruckt am: 15.11.2024 um 15:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo matze-pe!
Ich hoffe, dass es ist Dir recht ist, wenn das Ordnerdatum nicht mit -3 Tagen, sondern mit -%MindestAlter% Tagen ermittelt wird:
Grüße
bastla
Ich hoffe, dass es ist Dir recht ist, wenn das Ordnerdatum nicht mit -3 Tagen, sondern mit -%MindestAlter% Tagen ermittelt wird:
@echo off & setlocal
set /a MindestAlter=3
set "Quelle=C:\Sicherung\*.*"
set "GD=%temp%\GetDate.vbs"
echo D=DateAdd("d",-%MindestAlter%,Now):WScript.Echo Year(D)^&"_"^&Right("0"^&Month(D),2)^&"_"^&Right("0"^&Day(D),2)>"%GD%"
for /f "tokens=1-3 delims=_" %%i in ('cscript //nologo "%GD%"') do set jahr=%%i&set monat=%%j&set tag=%%k
del "%GD%"
set "Ziel=D:\Sicherung\bis_%jahr%-%monat%-%tag%\"
md "%Ziel%" 2>nul
echo Sicherung: Fenster wird in wenigen Minuten automatisch geschlossen!
echo -----------------------------------------------------------------------
set "AG=%temp%\Age.vbs"
echo A=DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Now):WScript.Echo A>"%AG%"
for %%i in ("%Quelle%") do for /f %%a in ('cscript //nologo "%AG%" "%%i"') do if %%a gtr %MindestAlter% move "%%i" "%Ziel%\%%~ni%%~xi.txt"
del "%AG%"
Grüße
bastla
Moin Matze-pe und bastla,
unbedeutender Vorschlag zur Vereinfachung:
Da diese Variablen %tag%, %monat% und %jahr% nun wirklich nicht benötigt werden, sondern nur EINE Variable mit dem "Heute - 3"-Verzeichnisnamen,
ginge es auch etwas schlanker...
Grüße
Biber
unbedeutender Vorschlag zur Vereinfachung:
Da diese Variablen %tag%, %monat% und %jahr% nun wirklich nicht benötigt werden, sondern nur EINE Variable mit dem "Heute - 3"-Verzeichnisnamen,
ginge es auch etwas schlanker...
....( Ersatzzeilen für alles zwischen [Set "GD=..."] und [md "%Ziel%" 2>nul] inkl.
set "GD=%temp%\GetDate.vbs"
echo Wscript.echo dateadd("d", date, -%Mindestalter%) >%GD%
for /f "tokens=1-3 delims=." %%i in ('cscript //nologo "%GD%"') do set "Ziel=D:\Sicherung\bis_%%k-%%j-%%i"
del "%GD%"
md "%Ziel%" 2>nul
...
Grüße
Biber
Hallo matze-pe!
Anmerkung zu Deinem Screenshot:
Im CMD-Fenster lässt sich sehr einfach Text markieren und kopieren - dazu Rechtsklick auf das Systemmenü (ganz links in der Titelleiste) des CMD-Fensters und im Register "Optionen" den "QuickEdit-Modus" einschalten. Beim Beenden die zweite Option ("... für alle Fenster ...") wählen. Ab sofort kannst Du dann im CMD-Fenster mit der linken Maustaste markieren und durch Rechtsklick kopieren, bzw, wenn kein Text markiert ist, durch Rechtsklick den Inhalt der Zwischenablage einfügen. Dann noch den so kopierten Text zwischen -Tags stellen und posten ...
Bevor Du das ausprobierst ändere aber bitte das "@echo off" in der ersten Batchzeile auf "@echo on" - dann sieht man/frau nämlich, wodurch der Fehler ausgelöst wird.
Da ich den eigentlichen Verschiebeteil unverändert übernommen habe, kann der Fehler eigentlich nur auf den Verzeichnisnamen zurückzuführen sein - daher kannst Du wahrscheinlich schon nach den ersten 3 Dateien den Batch abbrechen.
Na ja, schaun mer mal ...
@Biber
D'accord.
Eigentlich wollte ich gleich den gesamten Datumsstring passend formatiert ausgeben (was ich ja ohnehin mache), aber dann ist mir die Diskrepanz zwischen Beschreibung (Trennzeichen "_") und "set"-Zeile (Trennzeichen "-") aufgefallen, und daher wollte ich matze-pe die "gewohnten" Variablen bieten, um sich den endgültigen Verzeichnisnamen daraus selbst zusammenzusetzen - nixdestotrotz ist natürlich Dein Vorschlag eleganter.
Grüße
bastla
Anmerkung zu Deinem Screenshot:
Im CMD-Fenster lässt sich sehr einfach Text markieren und kopieren - dazu Rechtsklick auf das Systemmenü (ganz links in der Titelleiste) des CMD-Fensters und im Register "Optionen" den "QuickEdit-Modus" einschalten. Beim Beenden die zweite Option ("... für alle Fenster ...") wählen. Ab sofort kannst Du dann im CMD-Fenster mit der linken Maustaste markieren und durch Rechtsklick kopieren, bzw, wenn kein Text markiert ist, durch Rechtsklick den Inhalt der Zwischenablage einfügen. Dann noch den so kopierten Text zwischen -Tags stellen und posten ...
Bevor Du das ausprobierst ändere aber bitte das "@echo off" in der ersten Batchzeile auf "@echo on" - dann sieht man/frau nämlich, wodurch der Fehler ausgelöst wird.
Da ich den eigentlichen Verschiebeteil unverändert übernommen habe, kann der Fehler eigentlich nur auf den Verzeichnisnamen zurückzuführen sein - daher kannst Du wahrscheinlich schon nach den ersten 3 Dateien den Batch abbrechen.
Na ja, schaun mer mal ...
@Biber
D'accord.
Eigentlich wollte ich gleich den gesamten Datumsstring passend formatiert ausgeben (was ich ja ohnehin mache), aber dann ist mir die Diskrepanz zwischen Beschreibung (Trennzeichen "_") und "set"-Zeile (Trennzeichen "-") aufgefallen, und daher wollte ich matze-pe die "gewohnten" Variablen bieten, um sich den endgültigen Verzeichnisnamen daraus selbst zusammenzusetzen - nixdestotrotz ist natürlich Dein Vorschlag eleganter.
Grüße
bastla
Moin matze-pe,
hab ich nicht verstanden.
Was war denn nun der Unterschied zwischen dem Skript, das den Fehler oben geworfen hat und dem, das wunderbar funktioniert?
Oder noch hilfreicher für alle MitleserInnen:
poste doch bitte noch mal die Version, die jetzt tatsächlich im richtigen Leben einsetzbar ist.
Danke
Biber
hab ich nicht verstanden.
Was war denn nun der Unterschied zwischen dem Skript, das den Fehler oben geworfen hat und dem, das wunderbar funktioniert?
Oder noch hilfreicher für alle MitleserInnen:
poste doch bitte noch mal die Version, die jetzt tatsächlich im richtigen Leben einsetzbar ist.
Danke
Biber