Windows XP und höher

Windows XP und höher

In einer Batchdatei muss ich Monat, Tag und Jahr aus dem Datumsbefehl extrahieren. Daher habe ich Folgendes verwendet, das im Wesentlichen den Datumsbefehl analysiert, um seine Unterzeichenfolgen in eine Variable zu extrahieren:

set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%

Das ist alles großartig, aber wenn ich diese Batchdatei auf einem Computer mit anderen Regions-/Ländereinstellungen bereitstelle, schlägt dies fehl, da Monat, Tag und Jahr an verschiedenen Orten angegeben sind.

Wie kann ich Monat, Tag und Jahr unabhängig vom Datumsformat extrahieren?

Antwort1

Quelle: http://ss64.com/nt/syntax-getdate.html

Methode 2 (einzelner Befehl)

GetDate.cmd

@Echo off
:: Check WMIC is available
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_error

:: Use WMIC to retrieve date and time
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   IF "%%~L"=="" goto s_done
      Set _yyyy=%%L
      Set _mm=00%%J
      Set _dd=00%%G
      Set _hour=00%%H
      SET _minute=00%%I
)
:s_done

:: Pad digits with leading zeros
      Set _mm=%_mm:~-2%
      Set _dd=%_dd:~-2%
      Set _hour=%_hour:~-2%
      Set _minute=%_minute:~-2%

:: Display the date/time in ISO 8601 format:
Set _isodate=%_yyyy%-%_mm%-%_dd% %_hour%:%_minute%
Echo %_isodate%
pause

Bildbeschreibung hier eingeben


Methode 1 (cmd+vb)

GetDate.cmd

@Echo off
For /f %%G in ('cscript /nologo getdate.vbs') do set _dtm=%%G
Set _yyyy=%_dtm:~0,4%
Set _mm=%_dtm:~4,2%
Set _dd=%_dtm:~6,2%
Set _hh=%_dtm:~8,2%
Set _nn=%_dtm:~10,2%
Echo %_yyyy%-%_mm%-%_dd%T%_hh%:%_nn%

getdate.vbs

Dim dt
dt=now
'output format: yyyymmddHHnn
wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*10000 + hour(dt)*100 + minute(dt)

Antwort2

Windows XP und höher

getDate.cmd

@echo off
for /f "tokens=2 delims==" %%G in ('wmic os get localdatetime /value') do set datetime=%%G

set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%

echo %year%/%month%/%day%

Ausgabe

Bildbeschreibung hier eingeben

Antwort3

Ich weiß, es ist nicht genau das, wonach Sie gefragt haben, aber ich verwende den Windows-Port der Linux- dateAnwendung aus einem Befehl innerhalb der Batchdatei und weise das Ergebnis dann einer Variablen zu.

Ich habe noch keine Möglichkeit gefunden, das Datum zuverlässig nur mit Batch-Befehlen abzurufen.

Antwort4

Sie haben zwar Recht, dass VS 2008 eine Batchdatei ausgibt, Sie können jedoch praktisch jedes gewünschte Programm ausführen, einschließlich Powershell-Skripts und anderer Programme.

Bearbeiten:

Hier sind einige ähnliche Fragen:

https://stackoverflow.com/questions/1051845/visual-studio-2008-professional-build-process https://stackoverflow.com/questions/3049369/embed-application-compilation-time-stamp

Ursprünglich wollte ich dies zu SO verschieben...

verwandte Informationen