Board logo

标题: [已解决]怎么去掉日期中的“/”啊? [打印本页]

作者: stableboy     时间: 2006-10-11 04:07    标题: [已解决]怎么去掉日期中的“/”啊?

在windows批处理文件中,我想创建一个以当天日期命名的文件,但是文件名里不能有“/”,所以想去掉当天日期中的“/”;
即  想把  “2006/10/10”  转换成  “20061010”   以生成  “20061010.txt”文件
我只知道  set d=%date%  可以获得当天日期,但怎么去掉“/”啊? 哪位大大知道啊?

[ Last edited by stableboy on 2006-10-11 at 06:08 ]
作者: NaturalJ0     时间: 2006-10-11 04:17
%date:/=%
作者: stableboy     时间: 2006-10-11 04:32
还是不对啊,
%date:/=%
输出为      %date:%=%            啊~!
作者: vkill     时间: 2006-10-11 04:41
%date:~0,4%%date:~5,2%%date:~8,2%
作者: NaturalJ0     时间: 2006-10-11 04:50
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\J>set a=2006/10/15

C:\Documents and Settings\J>echo %a:/=%
20061015

C:\Documents and Settings\J>_

==================================================

这是我的运行情况啊
作者: stableboy     时间: 2006-10-11 05:48    标题: 多谢多谢

谢谢两位大大,你们的方法都可以解决了。。。
这里的技术都好难啊,我看了几个帖子,都不懂。。。
要奋发图强,努力学好Dos批处理啦。~!。~!

今天新发现的这个论坛,好论坛啊,我以后就在这里学习了,


to NaturalJ0:
不好意思了,给上面加完分,在给大大加分时,发现每24小时只能加2分,所以只能等明天在给大大加分了啊~!   :P

[ Last edited by stableboy on 2006-10-11 at 05:54 ]
作者: 不得不爱     时间: 2006-10-11 05:52
在2000系统了是%date:~4,4%%date:~9,2%%date:~12,2%才正确
作者: ARCF     时间: 2006-10-11 06:07
大虾们,能否说明下为什么呢?
:/这个有什么作用?
:~4,4这个又有什么作用?
作者: lxmxn     时间: 2006-10-11 06:46


  Quote:
Originally posted by ARCF at 2006-10-11 06:07:
大虾们,能否说明下为什么呢?
:/这个有什么作用?
:~4,4这个又有什么作用?


这里的":/"要结合“%date:/=%”来理解,作用是使"%date%"这个变量中的“/”字符都替换成“=”号后面的符号,而这里的"="后面没有任何字符,也就是替换成空的,实际上是去掉%date%这个变量值里面所有的"/"符号.

而这里的":~4,4"也要结合上面的"%date:~4,4%"来理解,也就是截取"%date%"变量中的第四个字符到第八个字符,也就是从第四位开始,往后数四个这四个字符啦..

建议把"set /?"帮助命令好好看一下....

作者: weilong888     时间: 2006-10-11 09:15
还是%date:/=%这样的代码简洁实用。
作者: kcdsw     时间: 2006-10-12 05:14

For /F "tokens=1" %%a in ('date/t') do md %%a
机器的时间设置可能各不相同  

用for 分析date/t 的输出 然后将日期传递给md  这样比较好  我用了7个月了
我综合利用了一下系统的一些特性
写了个动态目录

[ Last edited by kcdsw on 2006-10-12 at 05:16 ]
作者: weilong888     时间: 2006-10-12 05:47
kcdsw的代码,试了一下。 在xpsp2中,能正确创建当前时间的目录。
作者: 3742668     时间: 2006-10-12 06:36


  Quote:
Originally posted by kcdsw at 2006-10-12 05:14:
For /F "tokens=1" %%a in ('date/t') do md %%a
机器的时间设置可能各不相同  

用for 分析date/t 的输出 然后将日期传递给md  这样比较好  戠...

利用系统特性:
md %date%*
把*加到前面就是建立目录为当前星期。

讨论有点超出主题范围了。
作者: lxmxn     时间: 2006-10-12 07:18


  Quote:
Originally posted by 3742668 at 2006-10-12 06:36:

利用系统特性:
md %date%*
把*加到前面就是建立目录为当前星期。

讨论有点超出主题范围了。


按照版主的方法试了一下,好像不行哦``

  Quote:
C:\>md %date%*
文件名、目录名或卷标语法不正确。
处理: 星期三* 时出错。


作者: 3742668     时间: 2006-10-12 07:27
Re lxmxn:
Well,你可以在后面加上 2>nul
不要被错误提示所蒙蔽了眼睛,关键在于当前目录下有没有新建的目录。
作者: lxmxn     时间: 2006-10-12 07:35

Re:3742668

呵呵,真的建立了这个文件夹,我看见了出错的提示,还以为没有建立这个文件夹呢``

“ 2>nul”这招可真够绝的哦``不管系统报什么错,强制执行建立目录命令,呵呵````

作者: weilong888     时间: 2006-10-12 07:39
加上2>nul就不会有出错提示信息了。
作者: Dana     时间: 2007-4-22 15:33
学习了,以前我也遇到过,是改注册表和提取字符实现的...
作者: 546474     时间: 2007-4-22 22:51
高,牛,绝。
作者: HAT     时间: 2007-6-18 17:03

For /F "tokens=1" %%a in ('date/t') do md %%a

md %date%*

md *%date%
XP下测试失败
即使加上引号也不能正确创建

  Quote:
C:\>echo %date%
06/18/2007 Mon


作者: joshualaw     时间: 2007-6-19 13:06
[quote]Originally posted by HAT at 2007-6-18 05:03 PM:
For /F "tokens=1" %%a in ('date/t') do md %%a

md %date%*

md *%date%
XP下测试失败
即使加上引号也不能正确创建

For /F "tokens=1" %%a in ('date/t') do md %%a

%date:~0,4%%date:~5,2%%date:~8,2%

%date:~4,4%%date:~9,2%%date:~12,2%

这些语句只能用在XP上,能否告知用那同一语句都能用在XP 和 WIN2K 上,请各位高手出招

[ Last edited by joshualaw on 2007-6-19 at 01:12 PM ]
作者: zasxcdfv     时间: 2007-6-19 13:26


  Quote:
Originally posted by joshualaw at 2007-6-19 01:06 PM:
[quote]Originally posted by HAT at 2007-6-18 05:03 PM:
For /F "tokens=1" %%a in ('date/t') do md %%a

md %date%*

md *%date%
XP ...

可以先用findstr ver判断操作系统吧。
刚好上午我也遇到了win2000和xp下date 格式不同的问题。烦人啊。
作者: HAT     时间: 2007-6-19 13:43


  Quote:
C:\>echo %date%
06/19/2007 Tue

21楼的帅哥请先看看我的日期显示格式

For /F "tokens=1" %%a in ('date/t') do md %%a
%date:~0,4%%date:~5,2%%date:~8,2%
%date:~4,4%%date:~9,2%%date:~12,2%
这三条语句即使在XP下也不通用
因为日期的显示格式可能不同
作者: zasxcdfv     时间: 2007-6-19 13:47


  Quote:
Originally posted by HAT at 2007-6-19 01:43 PM:

21楼的帅哥请先看看我的日期显示格式

For /F "tokens=1" %%a in ('date/t') do md %%a
%date:~0,4%%date:~5,2%%date:~8,2%
%date:~4,4%%date:~9,2%%date:~12,2%
这三条语句 ...

能通过某些细节判断格式么?比如操作系统版本号?
这个问题不大但很烦,程序拿出来可用性不强。
ver >111.txt
echo %date%>>111.txt
start 111.txt


Microsoft Windows XP [版本 5.1.2600]
2007-06-19 星期二

看来没戏:( 难道只能在控制面板里改的吗。。。

[ Last edited by zasxcdfv on 2007-6-19 at 02:11 PM ]
作者: HAT     时间: 2007-6-19 14:02
//能通过某些细节判断格式么?比如操作系统版本号?
系统版本号好像不能区分:'(

  Quote:
C:\>ver

Microsoft Windows XP [Version 5.1.2600]

C:\>echo %date%
06/19/2007 Tue


作者: zasxcdfv     时间: 2007-6-19 14:20
精通注册表的朋友可以看一下HKEY_CURRENT_USER/Control Panel/International
里面的几个建值,应该对这个问题有所帮助
sShortDate就是date的格式
作者: mgchl     时间: 2008-9-9 23:00    标题: 日期格式是 2008-09-09 星期二

set d=%date%
set a=%d:~0,10%
echo %a:-=%


运算结果就是

H:\>set d=2008-09-09 星期二

H:\>set a=2008-09-09

H:\>echo 20080909
20080909
作者: mgchl     时间: 2008-9-9 23:01    标题: 日期格式是 2008-09-09 星期二

set d=%date%
set a=%d:~0,10%
echo %a:-=%


运算结果就是

H:\>set d=2008-09-09 星期二

H:\>set a=2008-09-09

H:\>echo 20080909
20080909