2011-08-11 22 views

Respuesta

14

En mi sistema, donde echo %date% vuelve dd/mm/yyyy:

set now=%date:~6,4%%date:~3,2%%date:~0,2% 
echo.%now% 

La sintaxis utilizada es %date:~S,L% donde S es un desplazamiento de carácter y L es la longitud de leer desde el valor devuelto por %date%.

+0

+1 en tu respuesta . Solo curiosidad, ¿qué significa el punto en 'echo.% Now%' do? Sé que 'echo' escribe una línea en blanco, pero nunca había visto eso antes. –

+5

Es un truco para evitar que ECHO ejecute accidentalmente un comando; si '% f%' era '" OFF "' entonces 'echo% f%' ** ejecutaría ** el comando '" ECHO OFF "' que desactivaría el eco, el período hace 'ECHO.% f%' print ' "DESACTIVADO" '. –

+0

¡Gracias por eso! –

1

También puede utilizar un comando FOR para separar las partes de una fecha:

for /f "tokens=1-3 delims=/" %%a in ("%date%") do set now=%%c%%a%%b 

Fecha componentes están divididos por/(delims) y tomado las tres primeras partes (tokens) en la variable %% ay sucesivos (%% b y %% c).

Aunque esto parece más complicado que el método anterior, es menos propenso a obtener errores cuando lo usó. Para más detalles, escriba: FOR /?

1
@echo off 
for /f "tokens=*" %%a in (' 
    "wmic path Win32_LocalTime get year,month,day /value|findstr =" 
    ') do @set %%a 
echo %year%%month%%day% 
pause 
0

En mi máquina de Windows 10, el formato de fecha%% es diferente de los valores esperados por @Alex K. respuesta, por lo que no funcionó para mí . Después de investigar un poco más, desenterré el siguiente script, que es bueno para obtener cualquier fecha en el formato de su elección. Utilice day=0 para hoy, para mañana day=1, day=-1 de ayer, etc ...

set day=0 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "today=%yyyy%%mm%%dd%" 

echo %today% 
0

@ 's raider33 funciona guión, aquí es otra forma que utilizan PowerShell:

@echo off 
for /f %%i in ('PowerShell -Command "Get-Date -uformat '%%Y%%m%%d'"') do (
    set "Today=%%i" 
) 
echo,%Today% 
Cuestiones relacionadas