中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何获取类似20071212这样的日期?
作者:
标题: 如何获取类似20071212这样的日期? 上一主题 | 下一主题
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『楼 主』:  如何获取类似20071212这样的日期?

假如当天日期是2007-12-12,那么用date /t命令后会输出:
“2007-12-12 星期三”
这样的字符串。

但要获得20071212该怎么弄呢?
我知道的一个办法是截取字符串,然后拼凑出20071212。但有一个问题,在有些电脑上面,日期格式并非如此,截取的算法会非常复杂,要考虑非常多的可能性。
还有一个问题,假如日期是2007-1-1,我想得到20070101呢?这个1月和1日之前的“0”该怎么补上去呢?

我觉得用批处理很难完成,或许各位高手有办法,请帮忙指点一下,多谢!

2007-12-13 14:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 2 楼』:  

:
@echo off
for /f "tokens=1-3 delims=-/ " %%a in ('date/t') do  echo %%a%%b%%c
pause
[ Last edited by 26933062 on 2007-12-13 at 02:37 PM ]



致精致简!
2007-12-13 14:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

不知道这个可不可以?
@echo off
for %%a in (%date%) do (
echo\%%a|findstr /r "^[0-9]"
if errorlevel 0 (set mydate=%%a
call echo %%mydate:-=%%
goto :end
)
)
:end
pause


2007-12-13 14:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 4 楼』:  

多谢指点。
不过一旦更改了系统的区域里面的日期设置,这个就没有用了。

我想这个问题估计只能依靠第三方程序或者vbs来解决。

我查到一个以前的帖子,有一个DateX的第三方工具,先拿来研究一下看看,如果不行再动用vbs吧。

2007-12-13 14:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 5 楼』:  

研究了一下datex这个工具,但有一个地方还是无法实现。

假如今天是2007.12.01,我想要把2007.10.01-2007.10.31的全部日期都列出来,如果按照datex这个工具,只能用-o这个参数设置日期天数的偏移量,但我又如何知道12.01和10.01之间的日期差呢?

2007-12-13 16:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by lvjing79 at 2007-12-13 16:05:
研究了一下datex这个工具,但有一个地方还是无法实现。

假如今天是2007.12.01,我想要把2007.10.01-2007.10.31的全部日期都列出来,如果按照datex这个工具 ...


@echo off
rem 列出2007-2-22号到2007-3-30号之间所有的日期
rem 需要利用datex.exe命令

set begin_date=2007-02-22
set end_date=2007-03-30
set num=0
Setlocal enableDelayedExpansion
:startagain
for /f %%a in ('datex -d %begin_date% -o !num!') do set mydate=%%a
echo %mydate%
set/a num+=1
if "%mydate%"=="%end_date%" goto :end
goto :startagain
:end
pause


2007-12-13 18:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuhansky
初级用户





积分 33
发帖 12
注册 2007-12-11
状态 离线
『第 7 楼』:  

@set dst=%date:~0,4%%date:~5,2%%date:~8,2%
@md %dst%

2007-12-13 18:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




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


@echo off
>date_.vbs echo mm=right("0"^&month(date),2):dd=right("0"^&day(date),2):WScript.echo year(date)^&mm^&dd
for /f %%i in ('"cscript //nologo date_.vbs"') do echo %%i&del date_.vbs
pause




2007-12-13 20:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by zh159 at 2007-12-13 08:30 PM:
[code]@echo off
>date_.vbs echo mm=right("0"^&month(date),2):dd=right("0"^&day(date),2):WScript.echo year(date)^&mm^&dd
for /f %%i in ('"cscript //nolo ...

>date_.vbs
后面才跟echo语句,不是太清楚啊,呵呵
我记得是echo语句的输出用>重定向到vbs文件中啊,上面这样的写法又是怎么回事呢?

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




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

都一样,位置不同而已



2007-12-14 12:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: