Board logo

标题: ((((((( 超 急 求 助 )))))) win2000server版无法实现 [打印本页]

作者: 影视狂奔     时间: 2005-3-4 00:00    标题: ((((((( 超 急 求 助 )))))) win2000server版无法实现

关于批处理自动改名的问题?
win2000svser的dos状态下执行a.bat批命令文件自动将 "temp.txt" 原文件名改成 当前日期+temp.txt(即名为:"2005-03-04temp.txt" )的文件,注意当前日期为系统当天的自动日期,求教该a.bat的批命令如何编写,先谢谢各位大侠指点!
下面的语句在win2000可行,可惜在server下就不行了,因%date%返回是"星期五 2005-03-04",因有空格提示非法,呜....如何截取和解决,急急急.....
echo ren test.txt %date%test.txt >temp.bat
[em06][em06][em06][em06][em06]
作者: chenhui530     时间: 2005-3-4 00:00
for /f "tokens=1" %%a in ('date /t') do ren temp.txt %%atemp.txt
作者: 影视狂奔     时间: 2005-3-4 00:00
超级感激chenhui530同志,谢谢
作者: chenhui530     时间: 2005-3-4 00:00
没事其实2k以上的系统的for命令很强大了
作者: Climbing     时间: 2005-3-7 00:00
ren temp.txt %date%temp.txt这个命令好象就管用了,有必要用for吗?
作者: 影视狂奔     时间: 2005-3-7 00:00


  Quote:
以下是引用Climbing在2005-3-7 2:56:54的发言:
ren temp.txt %date%temp.txt
这个命令好象就管用了,有必要用for吗?

因在WIN2000SERVER无效,故需要用到FOR

[此贴子已经被作者于2005-3-7 11:03:33编辑过]



作者: JonePeng     时间: 2005-3-7 00:00
Climbing大哥:ren temp.txt %date%temp.txt看起来好像没有语法错误,但在Win2000下%date%的值包含日期以及星期,而且日期和星期之间用空格隔开,于是命令就变成ren temp.txt 2005-03-07 星期一temp.txt,由于多了一个空格,所以提示语法不正确。正确的输入应该要将ren的第二个参数用双引号括起来,即ren temp.txt "%date%temp.txt"。可惜此命令的效果多出了“星期几”,不符合楼主的要求。本来我想到用Strings来解决。但是Win2000里Strings命令不能将输出的字符串存入变量中。chenhui的for命令用得真妙!强啊!!
作者: Climbing     时间: 2005-3-9 00:00
我是用Windows 2003系统试验的%date%变量,我觉得2003下应该跟2000没有区别,没想到真的有区别(微软的系统总是这么不兼容)。我的2000下的%date%变量内容为:
C:\>echo %date%
星期三 2005-03-09针对这种情况,可以这样写:ren temp.txt %date:~-10%temp.txt如果星期在后面,可以写成:ren temp.txt %date:~0,10%temp.txt当然,chenhui的for命令确实用的很不错,也是值得推荐的。strings确实不能在NT环境下直接设置变量,不过可以用lmod来实现。
strings right %date%, 10 | lmod /L1 set thedate=[] > temp.bat
call temp.bat
del temp.bat或者不用strings,直接用lmod:
date /t | lmod /L1 set thedate=[$1] > temp.bat
chcp 936
call temp.bat
del temp.bat
作者: JonePeng     时间: 2005-3-9 00:00
“%date:~0,10%”原来可以这样用!连Strings和Lmod也省了。哈哈,又学多一招。