我需要弄清楚当前日期 6/6/2013 是 MM/DD/YYYY 还是 DD/MM/YYYY 格式。因此它们都是“6”。
我要做的是获取当前日期,然后添加 3 天,从那里我会知道哪个是 MM 字段,因为它不会改变。我不知道如何批量打印日期+3天。甚至可能吗?有没有人有任何想法?我已经做了几个小时了。我尝试使用 GNU date 命令,但我必须指定输出,所以它没有帮助.. GRR!
请注意,这是针对 WINDOWS 的。请注意,我正在查看的文件无法更改,因此如果日期是 2013 年 9 月 9 日,那么我必须使用这些文件来确定字段。
编辑:我最终使用了以下代码:这有点过头了,但你可以看到我基本上是如何做到的。我设置该值的原因是因为我将它与 Gnu date.exe 命令结合使用,该命令非常擅长根据特定日期提供日期。所以我在脚本的其他地方这样使用它:date.exe --date "Now -90 days" %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
)