mikrocontroller.net

Forum: PC-Programmierung Frage an die Batch-ler


Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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%   ???

Autor: ugosna (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte ausnutzen, dass Datum und Uhrzeit mit einem Leerzeichen 
getrennt sind. Beim Aufruf einer "Funktion" ergibt das zwei getrennte 
Parameter.
@echo off
@setlocal enableextensions, EnableDelayedExpansion

rem set jetzt=%date:~-10,2%.%date:~-7,2%.%date:~-4%
set jetzt=%date:~-4%%date:~-7,2%%date:~-10,2%
rem echo %jetzt%

for /R .\ %%i IN (*.*) Do (
  call :formdat %%~ti
  echo %jetzt% - !fdate! %%~ti
)
goto :eof

:-----------------------
:formdat
set fdate=%1
set fdate=!fdate:~-4!!fdate:~-7,2!!fdate:~-10,2!
rem echo x %1 %2 !fdate!

goto :eof

Ich habe auch die Formatierung des Datums auf YYYYMMDD geändert, da 
meiner Meinung nach Vergleiche damit einfacher sind.
F:\test>dateb.cmd
20160916 - 20131219 19.12.2013 21:27
20160916 - 20160906 06.09.2016 18:40
20160916 - 20160831 31.08.2016 23:12
20160916 - 20160901 01.09.2016 05:48
20160916 - 20160901 01.09.2016 05:47

Autor: Rainer V. (rudi994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch einer:
@echo off
setlocal EnableExtensions, EnableDelayedExpansion
for /R .\ %%i in (*.*) do (
    echo FName: %%i
    call :splitdate %%~ti
    pause
    echo.
)
goto ende

:---------
:splitdate
set "dtmp=%1 %2"
set datum=%dtmp:~0,10%
set jetzt=%date%
echo FTime: %dtmp%
echo Datum: %datum%
echo Form1: %datum:~0,2%. Tag, %datum:~3,2%. Monat im Jahr %datum:~6,4%
echo Form2: %datum:~-10,2%. Tag, %datum:~-7,2%. Monat im Jahr %datum:~-4,4%
echo Jetzt: %jetzt%
if /i "%jetzt%" == "%datum%" (
    echo Jetzt == Datum : Ist gleich
) else (
    echo Jetzt == Datum : Ist nicht gleich
)
goto :eof

:ende
endlocal
exit

: Bearbeitet durch User
Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst mal vielen Dank.
Ich werde mal schauen, wie weit ich damit komme.

Autor: sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.