试图找出MM/DD/YYYY与DD/MM/YYYY

Mik*_*e Q 0 batch-file

我需要弄清楚当前日期6/6/2013是否为MM/DD/YYYY与DD/MM/YYYY格式.因此他们都是"6".

我要做的是采取当前日期,然后添加3天,从那里我会知道哪一个是MM字段,因为它不会改变.我不知道如何批量打印日期+ 3天.它甚至可能吗?有没有人有任何想法?我已经在这里待了几个小时.我试图使用GNU date命令,但我必须指定输出,所以它没有帮助.. GRR!

注意,这适用于WINDOWS.请注意,我正在查看的文件无法更改,因此如果日期是9/9/2013,那么我必须使用它来确定字段.

编辑:我最终使用以下代码:它有点完成但你可以看到我基本上是这样做的.我设置值的原因是因为我将它与Gnu date.exe命令结合使用,该命令非常适合根据特定日期提供日期.所以脚本中的其他地方我使用它如下:date.exe - 日期"现在-90天"%DATEFORMAT%.我不得不放弃在另一篇文章中建议的日期/ T选项,因为这实际上并没有显示所有情况下的正确数据.

for /F "skip=1 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate ^< NUL') do (
    echo.%%a|findstr /C:"/" >nul 2>&1 && set DELIM=/
    echo.%%a|findstr /C:"-" >nul 2>&1 && set DELIM=-
    echo.%%a|findstr /C:"." >nul 2>&1 && set DELIM=.

    for /F "tokens=1-3 delims=-/." %%b in ("%%a") do (
        set format=%%b%%c%%d
    )
)

if %DELIM%==/ ( 
    :: US English options 
    if %format%==Mdyyyy set DATEFORMAT=+%%-m/%%-d/%%Y 
    if %format%==Mdyy set DATEFORMAT=+%%-m/%%-d/%%y
    if %format%==MMddyy set DATEFORMAT=+%%m/%%d/%%y
    if %format%==MMddyyyy set DATEFORMAT=+%%m/%%d/%%Y
    if %format%==yyMMdd set DATEFORMAT=+%%y/%%m/%%d 

    :: UK English options
    if %format%==ddMMyyyy set DATEFORMAT=+%%d/%%m/%%Y
    if %format%==ddMMyy set DATEFORMAT=+%%d/%%m/%%y
    if %format%==dMyy set DATEFORMAT=+%%-d/%%-m/%%y

) else if %DELIM%==- (
    if %format%==yyyyMMdd set DATEFORMAT=+%%Y-%%m-%%d
    if %format%==ddMMMyy set DATEFORMAT=+%%d/%%m/%%y
    if %format%==dMyy set DATEFORMAT=+%%-d-%%-m-%%y
) else if %DELIM%==. (
    if %format%==dMyy set DATEFORMAT=+%%-d.%%-m.%%y
) else (
    echo ERROR: System was unable to identify dateformat.
    ping -n 10 -w 1 127.0.0.1 >NUL
)
Run Code Online (Sandbox Code Playgroud)

End*_*oro 5

要批量获取当前日期格式,请尝试以下操作:

@echo off&setlocal
reg query "HKCU\Control Panel\International" /v sShortDate
Run Code Online (Sandbox Code Playgroud)

..output(可能会有所不同):

 sShortDate  REG_SZ  M/d/yyyy
Run Code Online (Sandbox Code Playgroud)