中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [请教]如何在批处理中判断日期?
« [1] [2] »
作者:
标题: [请教]如何在批处理中判断日期? 上一主题 | 下一主题
yaomm123456
新手上路





积分 9
发帖 3
注册 2006-9-28
状态 离线
『楼 主』:  [请教]如何在批处理中判断日期?

判断今天是否是20号
如果是就执行拷贝命令

批处理怎么编?请教
(不显示DOS运行窗更好)
谢!


————————————俺是分割线——————————————


*********************************
                     版务记录
*********************************
操作:       更改标题
原因:       原格式不符版规
原标题:    新手求教
执行:       3742668
处罚:       初犯,赦之。
备注:       1.建议发贴前看看置顶版规
              2.如何更改标题?
                 点击所发贴右下角
                 编辑
按钮,然后进行编辑。
**********************************


[ Last edited by 3742668 on 2006-9-29 at 09:07 ]

2006-9-28 06:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  XP下判断当天是否是系统设置中的20号,可以用 if %date:~-2% equ 20 的格式。

  不显示DOS运行窗口已经是老生常谈的话题了,光靠批处理命令是实现不了的,楼主还是打消这个念头吧——除非借助第三方软件或其他语言。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-28 07:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yaomm123456
新手上路





积分 9
发帖 3
注册 2006-9-28
状态 离线
『第 3 楼』:  

2楼的朋友
我试了,好象不行呀

2006-9-28 21:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 4 楼』:  

我记得 namem 好像说过他时间后面没有星期几的
你换这个试试看吧 %date:~8,2%

2006-9-28 21:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by NaturalJ0 at 2006-9-28 21:26:
我记得 namem 好像说过他时间后面没有星期几的
你换这个试试看吧 %date:~8,2%

  是的,我的时间后面有时候有星期几,但是绝大部分时候是没有的,不知道是哪个地方设置出问题了。还是你的方法要通用一点。另外,用下面截取字符的方法也可以,只不过要稍微麻烦一点:
@echo off
for /f "tokens=3 delims=-" %%i in ("%date%") do echo 当前系统日期为 %%i 日
pause




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-28 21:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  


@echo off
if "%date:~8,-4%" equ "20" (
echo 这里你就是执行拷贝命令
) ELSE (
echo 今天不是20号
)
PAUSE
[ Last edited by fastslz on 2006-9-28 at 21:51 ]



第一高手    第二高手

2006-9-28 21:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jastyg
中级用户





积分 219
发帖 82
注册 2005-10-29
状态 离线
『第 7 楼』:  

%date%在XP和2000下的结果是相反的一个星期在前面一个在后面



www.jastyg.com
www.efengchi.com
2006-10-1 03:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 8 楼』:  

是的,2000和XP的日期显示是这样的,不过楼主已经说过啦,是XP系统,其实是2000也是好处理的,用VER命令的输出判断一下系统类型,然后在进行相应的处理便是啦........



我今后在论坛的目标就是做个超级坏人!!!
2006-10-1 03:34
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
lxmxn
版主




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



  Quote:
Originally posted by fastslz at 2006-9-28 21:47:
@echo off
if "%date:~8,-4%" equ "20" (
echo 这里你就是执行拷贝命令
) ELSE (
echo 今天不是20号
)
PAUSE
[ Last edited by fastslz on 2006 ...

执行你这个怎么成了这个了?
C:\>兀
'兀' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

????????

2006-10-1 04:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 10 楼』:  

不要保存成unicode的txt




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-1 06:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




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

那保存为什么?

2006-10-1 09:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 12 楼』:  

粘贴到记事本》保存类型》所有文件》?.cmd》编码还是默认的ANSI



第一高手    第二高手

2006-10-1 10:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




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

多谢!
顺便问一下,unicode 和 ansi 有什么区别?

2006-10-1 11:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 14 楼』:  

这个问题自己搜索




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-1 12:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 15 楼』:  

这一下子可说不明白的,引用下willsort 版主关于编码一贴

  Quote:
willsort at 2006-7-23 12:15:
      记事本程序在保存一篇新建的文档时,如果没有指定编码类型,会使用缺省的ANSI类型(对于中文版来说,对应的就是GB码)。

       而在打开一篇已创建的文档时,它会分析文档的编码类型,它首先判断文档头部有无BOM(Byte Order Mark,字节序标记,长度为2~3字节),如果有则根据其内容判断编码类型,FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)[1]。

       因为事实上有很多非ANSI编码的文档是没有任何BOM的“纯文本”,所以对这些文档不能简单的判断为ANSI编码。而需要使用一系列的统计学算法根据文档内容来猜测文档编码。记事本使用了 IsTextUnicode 函数来判断是否为 Unicode/Unicode big endian 编码,使用 IsTextUTF8 判断是否为 UTF8 编码。

      但既然是统计学算法,就难免存在误判,尤其在文档内容过短时,由于样本的容量太小,这种误判的概率会显著增大。比如那个有名的微软与联通有仇的笑话,就是记事本在打开只有"联通"二字的ANSI编码文档时,IsTextUTF8 函数将其误判为UTF8编码[2];同样的误判也发生在 IsTextUnicode 函数上,比如具有 “this app can break”这种具有4335结构的文档,会被误判为 Unicode 编码[3][4]。

      需要说明的是,这种误判的可能性是建立在文本较短且其字节位特征不被干扰的前提上的。如果将上述的文本做稍许修改(即使只是增加一个回车),则误判很难再发生。

      而 yuanyong630 兄方案的特殊性在于,它的字节串不但具有Unicode特征,而且很长达到了1288字节,也就是说它的Unicode特征性很强,所以可以抵抗一些较短的不具有Unicode特征串的干扰,这是由统计学的规律所决定的。但是在干扰串稍长时,Unicode的特征将会受到显著干扰,直至被 IsTextUnicode 函数认定为非 Unicode。所以,有些朋友总是无法测试成功,应该是与附加的批处理代码长度和内容相关。大家可以测试一下[5]中的代码。

      因为其他的编辑器(比如 Word / Wordpad / EditPlus / UltraEdit)使用了更新的编码类型判断算法,所以在 Unicode 判断上改进了不少,而 UTF8 的判断仍然不尽如人意。但因为理论上来说完全准确地算法并不存在,所以我们只能依靠避免使用无BOM的非ANSI文档,或者打开文档时手动指定编码类型。

      另外,如果使用记事本保存了这些误判了编码类型的文件,则将难以恢复。如果使用误判编码保存,则将给原文档加上BOM标记,则使用其他编辑器也再无法观察到原文档。如果使用 ANSI 编码保存,则原文档将会被当作 Unicode 文档而被转换,还原的可能性接近于零。

[1] Unicode简介
http://my.opera.com/neutronstar/blog/index.dml/tag/编码

[2] 微软为什么和联通有仇
http://blog.vckbase.com/localvar/archive/2005/07/12/9510.aspx

[3] Notepad bug? Encoding issue?
http://weblogs.asp.net/cumpsd/archive/2004/02/27/81098.aspx

[4] Bush Hid The Facts
http://www.shoutwire.com/comments/16341/Bush_Hid_The_Facts

[ Last edited by fastslz on 2006-10-1 at 12:16 ]



第一高手    第二高手

2006-10-1 12:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: