如何将sysdate存储在格式为25Jan2014的变量中

时间:2014-01-25 11:01:50

标签: windows batch-file batch-processing

如何将sysdate存储在formate中作为25Jan2014,我能够在formate中捕获日期为 25012014以及下面提到的查询

@echo off
SetLocal enabledelayedexpansion
for /f "tokens=2-4 delims=/ " %%a in ('') do set year=%%c
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set month=%%a
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set day=%%b
set TODAY=%day%%month%%year%
echo %TODAY% 

如何在25Jan2014 formate中捕捉日期?

4 个答案:

答案 0 :(得分:2)

这是达到你想要的方式

@echo off
SetLocal enabledelayedexpansion
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set year=%%c
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set month=%%a
for /f "tokens=2-4 delims=/ " %%a in ('date /T') do set day=%%b

if %month%=01 set monthname=Jan
if %month%=02 set monthname=Feb
if %month%=03 set monthname=Mrt
if %month%=04 set monthname=Apr
if %month%=05 set monthname=May
if %month%=06 set monthname=Jun
if %month%=07 set monthname=Jul
if %month%=08 set monthname=Aug
if %month%=09 set monthname=Sep
if %month%=10 set monthname=Oct
if %month%=11 set monthname=Nov
if %month%=12 set monthname=Dec

set TODAY=%day%%monthname%%year%
echo %TODAY% 

请注意,此解决方案仅在我的框中使用/表示日期时才有效,分隔符为-

答案 1 :(得分:1)

下面的批处理文件解决了您的特定问题:

@echo off
setlocal EnableDelayedExpansion
set m=100
for %%a in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do (
   set /A m+=1
   set month[!m:~-2!]=%%a
)
for /F "tokens=2-4 delims=/ " %%a in ('date /T') do set TODAY=%%b!month[%%a]!%%c
echo %TODAY%

答案 2 :(得分:0)

即使您修改脚本以提供正确的格式,它也依赖于语言环境,这意味着它可能无法在所有计算机上运行,​​具体取决于它们的配置方式。

如果您使用getTimeStamp.bat - a hybrid JScript/batch utility that performs date and time computations and formatting,解决方案是微不足道的。该实用程序是纯脚本,可​​在XP之后的任何现代Windows机器上运行。完整的文档嵌入在脚本中。

假设您在当前目录中有getTimeStamp.bat,或者更好,在路径中的某个位置:

call getTimeStamp -f {dd}{mth}{yyyy} -r TODAY

该实用程序默认使用英语月份缩写,但有一个选项可用于指定任何所需语言的缩写。还有完整月份名称,星期几名称和星期几缩写的选项。

答案 3 :(得分:0)

潜在问题

解析%date%变量或date /t输出不可靠,因为:

  1. 所有区域设置的日期/时间格式都不相同。
  2. 格式可以进一步定制。
  3. 替代解决方案

    请改用wmic。键入此命令以查看所有可用的日期/时间值:

    wmic path Win32_LocalTime get /all /value /format:list
    

    示例脚本

    @echo off
    setlocal enabledelayedexpansion
    set months="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
    
    call :getDate
    call :getMonthName %month%
    
    set TODAY=%day%%monthName%%year%
    echo %TODAY%
    exit /b
    
    :getDate
    for /f "skip=1 tokens=1-3" %%A in ('wmic path Win32_LocalTime get day^,month^,year /value /format:table') do (
    set day=00%%A
    set day=!day:~-2!
    set month=00%%B
    set month=!month:~-2!
    set year=%%C
    exit /b
    )
    
    :getMonthName
    for /f "tokens=%1" %%A in (%months%) do (set "monthName=%%A")
    exit /b
    

    参考