交流一个批处理DATE获取的问题,只当玩个游戏,散点小分!!!

Forever_Young 2008-07-28 01:23:52
问题背景如下:

有些系统下DATE的输出是:星期一 2008-07-28
有些系统下DATE的输出是:2008-07-28 星期一

看看大家使用批处理都有些什么办法获取到其中的 2008-07-28

要求在不调用外部命令的情况下完成(包括不准调用VBS)。最终看谁的办法最OK最简捷,谁就可以拿到其中的100分。

先开100分算是参与分,大家可以均分。最佳方法获得者的100分另追加,呵呵。

今天出门两天,回来看情况结帖。
...全文
1014 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
janwin 2010-06-12
  • 打赏
  • 举报
回复
怎么修改“时分秒”
ljc007 2008-07-31
  • 打赏
  • 举报
回复
清注意楼上的分割符是两个空格^_^
(有点变态,但不是不可能)
ljc007 2008-07-31
  • 打赏
  • 举报
回复
42楼的代码也无法保证得到正确的结果

C:\Test>echo %date%
07 31 2008 Thu
ljc007 2008-07-31
  • 打赏
  • 举报
回复
42楼的代码是否需要进一步转化呢?

C:\Test>echo %date%
07/31/2008 Thu
lw549 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 Forever_Young 的回复:]
把小日本的金木水火土先搞定了再说,呵呵,代码如下:

BatchFile code@echooffset/a dt=%date%>nul2>nulif%dt% equ0(setdt=%date:~-10%)else(setdt=%date:~,10%)echo%dt%
[/Quote]
这种方法非常巧妙,刚才看了一下帮助,对于非数字是当作环境变量来处理的。一个未定义的环境变量取值为0

不过我的感觉是这个技巧太偏了,可读性稍差:)
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
把小日本的金木水火土先搞定了再说,呵呵,代码如下:

[code=BatchFile]
@echo off
set /a dt=%date%>nul 2>nul
if %dt% equ 0 (set dt=%date:~-10%) else (set dt=%date:~,10%)
echo %dt%
[/code]
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 jyh_baoding 的回复:]
方法很多啊
[/Quote]

知道方法很多,但是有没有代码简短准确率最高的呢。
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 ljc007 的回复:]
你的题目要求是获取2008-07-28
在年月日顺序和位数不确定、分隔符不确定、星期值占用字符数量不确定的条件下,如何确保得到正确的结果?
^_^
[/Quote]

要真想你说得那样,连双空格分隔符都随意发挥出来了,那就无语了,哈哈。

保不准再蹦出个*.*的分隔符的,那就倒塌了。
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 lw549 的回复:]
其他语言的系统最近两周没有测试,因此暂时没有机器验证 :)
上面说的是日文系统默认情况,现在看一下指定日期格式的结果。


D:\>reg add "HKEY_CURRENT_USER\Control Panel\International" /v "sShortDate" /d "dddd yyyy-M-d" /f
この操作を正しく終了しました。

D:\>echo %date%
水 2008-07-30
[/Quote]

我靠,小日本原来是这么算星期的啊,真TM够鬼的,哈哈。
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
我咋觉得大家跑题了呢?

我好像说的要求很明显了,要求从DATE命令里获取,WMIC就不要再打了,再说了WMIC已经确定在家庭版下是不适用的。 ^_^
lelige 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 56 楼 ljc007 的回复:]
你的题目要求是获取2008-07-28
在年月日顺序和位数不确定、分隔符不确定、星期值占用字符数量不确定的条件下,如何确保得到正确的结果?
^_^
[/Quote]
[code=BatchFile]@echo off
FOR /F "skip=2 tokens=2-4 delims=," %%A IN ('WMIC Path Win32_LocalTime Get Day^, Month^, Year /Format:csv') DO (
SET /A CDate = 10000 * %%C + 100 * %%B + %%A)
echo %CDate:~0,4%-%CDate:~4,2%-%CDate:~6,2%
pause[/code]^_^
ljc007 2008-07-31
  • 打赏
  • 举报
回复
你的题目要求是获取2008-07-28
在年月日顺序和位数不确定、分隔符不确定、星期值占用字符数量不确定的条件下,如何确保得到正确的结果?
^_^
jyh_baoding 2008-07-31
  • 打赏
  • 举报
回复
方法很多啊
lw549 2008-07-31
  • 打赏
  • 举报
回复
其他语言的系统最近两周没有测试,因此暂时没有机器验证 :)
上面说的是日文系统默认情况,现在看一下指定日期格式的结果。


D:\>reg add "HKEY_CURRENT_USER\Control Panel\International" /v "sShortDate" /d "dddd yyyy-M-d" /f
この操作を正しく終了しました。

D:\>echo %date%
水 2008-07-30
lw549 2008-07-31
  • 打赏
  • 举报
回复
日文xp64下的结果,没有星期,打开时间托盘,看到的是日、金、木、水、火、土

D:\>echo %date%_
2008/07/30_
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 lw549 的回复:]
我的测试比较变态,日文,德文,阿拉伯文都要测的,不能认为星期占3个字符的:)
[/Quote]

测到哪一种不是三个的可要通报一声哦,要分享的,呵呵。
m1z1y10 2008-07-31
  • 打赏
  • 举报
回复
学习
lw549 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 Forever_Young 的回复:]
我也贴一个出来,没有使用FOR,WMIC,中英文系统OK,分隔符也不超心,直接得到赋值,大家看看如何。

BatchFile code@echooffsetdt=%date:~3,1%if"%dt%"equ""(setdt=%date:~-10%)else(setdt=%date:~,10%)echo%dt%
[/Quote]
我的测试比较变态,日文,德文,阿拉伯文都要测的,不能认为星期占3个字符的:)
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 ljc007 的回复:]
42楼的代码也无法保证得到正确的结果

C:\Test>echo %date%
07 31 2008 Thu
[/Quote]

遇到这样设置日期格式的人,那就只能无语了,真有人这样设置日期格式,那就不是我们该改代码了,是他该修复参数了,哈哈。
Forever_Young 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 ljc007 的回复:]
42楼的代码是否需要进一步转化呢?

C:\Test>echo %date%
07/31/2008 Thu
[/Quote]

这样的是可以正确获取的.
加载更多回复(47)

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧