En un archivo por lotes necesito extraer un mes, día y año del comando de fecha. Así que utilicé lo siguiente, que básicamente analiza el comando Fecha para extraer sus subcadenas en una variable:
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
Todo esto es genial, pero si implemento este archivo por lotes en una máquina con una configuración regional/país diferente, falla porque el mes, el día y el año están en ubicaciones diferentes.
¿Cómo puedo extraer mes, día y año independientemente del formato de fecha?
Respuesta1
Fuente: http://ss64.com/nt/syntax-getdate.html
Método 2 (cmd único)
ObtenerFecha.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
Método 1 (cmd+vb)
ObtenerFecha.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%
obtener fecha.vbs
Dim dt
dt=now
'output format: yyyymmddHHnn
wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*10000 + hour(dt)*100 + minute(dt)
Respuesta2
Respuesta3
Sé que no es exactamente lo que pediste, pero uso el puerto de Windows de la date
aplicación Linux desde un comando dentro del archivo por lotes y luego asigno el resultado a una variable.
Todavía tengo que encontrar una manera de obtener la fecha de manera confiable usando solo comandos por lotes.
Respuesta4
Si bien tiene razón en que VS 2008 genera un archivo por lotes, puede ejecutar prácticamente cualquier programa que desee, incluidos scripts de Powershell y otros programas.
Editar:
Aquí hay algunas preguntas similares:
https://stackoverflow.com/questions/1051845/visual-studio-2008-professional-build-process https://stackoverflow.com/questions/3049369/embed-application-compilation-time-stamp
Originalmente, iba a mover esto a SO. . .