命令行设置环境变量的问题,难!!!
有一个批处理,其中要设置一个环境变量,值为昨天的日期。如: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




