CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Windows专区 >  Windows NT/2000/XP/2003

命令行设置环境变量的问题,难!!!

楼主toyourheart(霸王龙)2006-07-01 15:01:57 在 Windows专区 / Windows NT/2000/XP/2003 提问

有一个批处理,其中要设置一个环境变量,值为昨天的日期。如:060630、060701等。如何做?  
   
  我知道%date%能得到今天的日期. 问题点数:80、回复次数:11Top

1 楼deny5()回复于 2006-07-02 02:48:31 得分 0

写个VBS,然后调用   能更简单一些Top

2 楼toyourheart(霸王龙)回复于 2006-07-02 09:30:08 得分 0

怎么写?Top

3 楼deny5()回复于 2006-07-02 11:20:38 得分 0

假设   你的bat文件   叫   1.bat   放在   c:\里面  
   
  这里新建一个VBS文件     文件内容如下  
  dtmYesterday   =   DateAdd("d",-1,Date)  
  strYear             =   DatePart("yyyy",dtmYesterday)  
  If   DatePart("m",dtmYesterday)   <   10   Then  
                  strMonth   =   0   &   DatePart("m",dtmYesterday)  
  Else  
                  strMonth   =   DatePart("m",dtmYesterday)  
  End   If  
  If   DatePart("d",dtmYesterday)   <   10   Then  
                  strDay   =   0   &   DatePart("d",dtmYesterday)  
  Else  
                  strDay   =   DatePart("d",dtmYesterday)  
  End   If  
  strYest   =   strYear   &   strMonth   &   strDay  
  Set   WshShell   =   CreateObject("WScript.Shell")  
  WshShell.Run("CMD   /K   CD   C:\   &   SET   yesterday="   &   strYest   &   "   &   1.bat")  
  Set   WshShell   =   Nothing  
   
  存成VBS文件就行了.  
   
  你可以在   1.bat里       写一行   echo   &yesterday%   试一下,   调用昨天的时候用%yesterday%这个变量就可以了.Top

4 楼deny5()回复于 2006-07-02 11:21:33 得分 0

最后   只运行VBS文件就可以了,   它直接就运行   你写的bat了Top

5 楼deny5()回复于 2006-07-02 11:24:57 得分 0

如果只想取060701     可以写成   %yesterday:~2,10%  
  可以自己echo实验一下Top

6 楼spark_li(晕忽忽(恶人谷:通讯连长))回复于 2006-07-02 12:48:05 得分 0

@echo   off  
  Rem   取1天之前的日期,取回放入变量nowdate  
  echo   wscript.echo   dateadd("d",-1,date)   >%tmp%\tmp.vbs  
  for   /f   "tokens=1,2,3*   delims=-"   %%i   in   ('cscript   /nologo   %tmp%\tmp.vbs')   do   set   y=%%i  
  for   /f   "tokens=1,2,3*   delims=-"   %%i   in   ('cscript   /nologo   %tmp%\tmp.vbs')   do   set   m=%%j  
  for   /f   "tokens=1,2,3*   delims=-"   %%i   in   ('cscript   /nologo   %tmp%\tmp.vbs')   do   set   d=%%k  
  if   %m%   LSS   10   set   m=0%m%  
  if   %d%   LSS   10   set   d=0%d%  
  set   nowdate=%y%%m%%d%  
  echo   %nowdate%  
  Top

7 楼deny5()回复于 2006-07-02 13:06:20 得分 0

楼上的好,   for语句用的真好Top

8 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-02 13:27:43 得分 0

还是用vbs完成呢Top

9 楼deny5()回复于 2006-07-02 17:50:27 得分 0

不过用for   语句速度有点慢.  
  Top

10 楼toyourheart(霸王龙)回复于 2006-07-02 23:23:44 得分 0

tokens=1,2,3*是什么意思那?为什么要加*   ?Top

11 楼deny5()回复于 2006-07-03 06:06:11 得分 0

tokens=x,y,m-n     -   指每行的哪一个符号被传递到每个迭代  
                                      的   for   本身。这会导致额外变量名称的分配。m-n  
                                      格式为一个范围。通过   nth   符号指定   mth。如果  
                                      符号字符串中的最后一个字符星号,  
                                      那么额外的变量将在最后一个符号解析之后  
                                      分配并接受行的保留文本。Top

相关问题

关键词

得分解答快速导航

  • 帖主:toyourheart

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo