Hallo Forum ich kann mit set jetzt=%date:~-10,2%.%date:~-7,2%.%date:~-4% eine variable mit dem Inhalt des Dtaums in der form 15.09.2016 erzeugen Mit for /R Z:\Backup %%i IN (*.*) Do echo %%~ti kann ich von jeder Datei das Datum anzeigen, welches in der Form TT.MM.JJJJ SS:MM ausgeliefert wird. Wie aber bekomme ich es hin, das Datum in einer Variablen abzulegen, um es zum Vergleich mit "jetzt" seiner letzten 6 Stellen zu berauben bzw, geht es auch, die überzählichen Stellen bei %%~ti gelich abzuschneiden :~-6% ???
Man könnte ausnutzen, dass Datum und Uhrzeit mit einem Leerzeichen getrennt sind. Beim Aufruf einer "Funktion" ergibt das zwei getrennte Parameter.
1 | @echo off |
2 | @setlocal enableextensions, EnableDelayedExpansion |
3 | |
4 | rem set jetzt=%date:~-10,2%.%date:~-7,2%.%date:~-4% |
5 | set jetzt=%date:~-4%%date:~-7,2%%date:~-10,2% |
6 | rem echo %jetzt% |
7 | |
8 | for /R .\ %%i IN (*.*) Do ( |
9 | call :formdat %%~ti |
10 | echo %jetzt% - !fdate! %%~ti |
11 | ) |
12 | goto :eof |
13 | |
14 | :----------------------- |
15 | :formdat |
16 | set fdate=%1 |
17 | set fdate=!fdate:~-4!!fdate:~-7,2!!fdate:~-10,2! |
18 | rem echo x %1 %2 !fdate! |
19 | |
20 | goto :eof |
Ich habe auch die Formatierung des Datums auf YYYYMMDD geändert, da meiner Meinung nach Vergleiche damit einfacher sind.
1 | F:\test>dateb.cmd |
2 | 20160916 - 20131219 19.12.2013 21:27 |
3 | 20160916 - 20160906 06.09.2016 18:40 |
4 | 20160916 - 20160831 31.08.2016 23:12 |
5 | 20160916 - 20160901 01.09.2016 05:48 |
6 | 20160916 - 20160901 01.09.2016 05:47 |
Hier noch einer:
1 | @echo off |
2 | setlocal EnableExtensions, EnableDelayedExpansion |
3 | for /R .\ %%i in (*.*) do ( |
4 | echo FName: %%i |
5 | call :splitdate %%~ti |
6 | pause |
7 | echo. |
8 | ) |
9 | goto ende |
10 | |
11 | :--------- |
12 | :splitdate |
13 | set "dtmp=%1 %2" |
14 | set datum=%dtmp:~0,10% |
15 | set jetzt=%date% |
16 | echo FTime: %dtmp% |
17 | echo Datum: %datum% |
18 | echo Form1: %datum:~0,2%. Tag, %datum:~3,2%. Monat im Jahr %datum:~6,4% |
19 | echo Form2: %datum:~-10,2%. Tag, %datum:~-7,2%. Monat im Jahr %datum:~-4,4% |
20 | echo Jetzt: %jetzt% |
21 | if /i "%jetzt%" == "%datum%" ( |
22 | echo Jetzt == Datum : Ist gleich |
23 | ) else ( |
24 | echo Jetzt == Datum : Ist nicht gleich |
25 | ) |
26 | goto :eof |
27 | |
28 | :ende |
29 | endlocal |
30 | exit |
:
Bearbeitet durch User
tex schrieb: > set jetzt=%date:~-10,2%.%date:~-7,2%.%date:~-4% Warnung: Sowas geht schief wenn es mal ein Kollege mit anderssprachigem Windows ausführt. Ging auch schief bei Windows 2000 -> Windows XP, kann also in Zukunft auch bei gleicher Sprache nochmal passieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.