中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]日期格式问题:如何获取4位数的年份
作者:
标题: [已结]日期格式问题:如何获取4位数的年份 上一主题 | 下一主题
alex9527
初级用户





积分 22
发帖 21
注册 2008-12-10
状态 离线
『楼 主』:  [已结]日期格式问题:如何获取4位数的年份

如何在系统日期格式为"yy/M/d"的情况下获取4位数的年份"YYYY"?
例子:
我的pc系统日期为08/12/11,如何用dos script来获取年份2008?
除了用reg语句修改注册表还有别的方法吗?
我的代码:
@echo off

for /f "tokens=1-3" %%A in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate ^| findstr /i sShortDate') do (
set date_format=%%C
)

reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy/MM/dd /f

for /f "tokens=1-3 delims=delims=/ " %%a in ('date/t') do copy myBat.bat myBat_%%a%%b%%c.log

reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %date_format% /f

pause
───────────────── 版务记录 ─────────────────
执行:HAT
操作:[2008-12-11]在帖子标题中增加搜索关键字;代码加code标签
说明:原标题"日期格式问题"不利于论坛搜索
处罚:论坛新人免于积分处罚
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-12-11 at 17:47 ]

2008-12-11 11:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waha1she
新手上路





积分 5
发帖 5
注册 2008-12-10
状态 离线
『第 2 楼』:  

20%date:~0,2%

2008-12-11 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
alex9527
初级用户





积分 22
发帖 21
注册 2008-12-10
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by waha1she at 2008-12-11 11:03:
20%date:~0,2%

如果年份是1999,2101, 不是都变成2099,2001?

2008-12-11 11:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
waha1she
新手上路





积分 5
发帖 5
注册 2008-12-10
状态 离线
『第 4 楼』:  

楼上的,本身年数用两位表示就不准确,你怎么能用批处理取得准确的年份?如果想准确点的话,就把日期格式改为yyyy-mm-dd,再用%date:~0,4%就能得到准确的年份了。

2008-12-11 11:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
alex9527
初级用户





积分 22
发帖 21
注册 2008-12-10
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by waha1she at 2008-12-11 11:10:
楼上的,本身年数用两位表示就不准确,你怎么能用批处理取得准确的年份?如果想准确点的话,就把日期格式改为yyyy-mm-dd,再用%date:~0,4%就能得到准确的年份了。

这个我知道,但我现在要解决这种特殊情况!

另外,谢谢斑竹给我修正标题。我也参考过你的一个帖子http://www.cn-dos.net/forum/viewthread.php?tid=41857但都得用reg来修改注册表,或WMIC?VBS?这个我不懂,还望指点!

2008-12-11 11:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  


@echo off
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (
  set t=%%a
)
set Year=%t:~0,4%
echo %Year%
pause

@echo off
>"%temp%\MyDate.vbs" echo dt=date()
>>"%temp%\MyDate.vbs" echo s=right(year(dt),4)
>>"%temp%\MyDate.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do set Year=%%a
echo %Year%
pause




2008-12-11 11:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 7 楼』:  

VBS
@echo off
>"%temp%\MyDate.vbs" echo wscript.echo year(now)
for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do set Year=%%a
echo %Year%
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-12-11 17:47




2008-12-11 12:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
alex9527
初级用户





积分 22
发帖 21
注册 2008-12-10
状态 离线
『第 8 楼』:  

谢谢6,7楼。问题可以解决了。只是用temp文件夹会引起防毒软件的警报,修改一下就ok了。
@echo off

>"sDate.vbs" echo dt=Date()
>>"sDate.vbs" echo ymd=right(Year(dt),4)+right(Month(dt),2)+right(Day(dt),2)
>>"sDate.vbs" echo wscript.echo ymd

for /f %%a in ('cscript /nologo "sDate.vbs"') do copy myBat.bat myBat_%%a.log

if exist sDate.vbs del /q sDate.vbs

pause


2008-12-11 14:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 9 楼』:  

有那么复杂么:
@echo off
>"sDate.vbs" wscript.echo wscript.echo year(date) ^& Month(date) ^& Day(date)
for /f %%a in ('cscript /nologo "sDate.vbs"') do copy myBat.bat myBat_%%a.log

if exist sDate.vbs del /q sDate.vbs

pause
[ Last edited by zh159 on 2008-12-11 at 19:46 ]



2008-12-11 18:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hello12588
新手上路





积分 7
发帖 7
注册 2010-9-6
状态 离线
『第 10 楼』:  

很有启发

2010-9-16 14:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
676939481
新手上路





积分 8
发帖 8
注册 2010-9-15
来自 上海
状态 离线
『第 11 楼』:  

%date:~0,4%
0,4的4是4个字符嘛?
0的意思腻...

2010-9-18 09:43
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (676939481)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: