Frage an die Batch-ler

Gast #4720090
Lesenswert?
• ▲
▼
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%   ???
Gast #4721518
Lesenswert?
• ▲
▼
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
#4721841
Lesenswert?
• ▲
▼
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
Gast #4733297
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren