|
xycoordinate
中级用户
积分 493
发帖 228
注册 2007-2-16 来自 安徽
状态 离线
|
『楼 主』:
set /a 取余(%)???
set syear=2008
set /a yyyy=syear%4
echo %yyyy%
以上直接在CMD下执行,OK!得到yyyy为0
但是,如果写在test.bat中,再执行test.bat却不行!!!
Quote: | @echo off
set syear=2008
set /a yyyy=syear%4 |
|
得到的yyyy为2008
???????
[ Last edited by xycoordinate on 2007-2-16 at 03:01 PM ]
|
|
2007-2-17 03:49 |
|
|
qjbm
初级用户
积分 125
发帖 44
注册 2007-1-24
状态 离线
|
『第
2 楼』:
@echo off
set syear=2008
set /a yyyy=syear%%4
|
|
2007-2-17 11:01 |
|
|
6622186
高级用户
积分 894
发帖 411
注册 2007-2-17
状态 离线
|
『第
3 楼』:
关于删除自身
删除.bat 文件自身可以用 del %0 , 在命令行下运行可以, 但是双击该文件无效, 只能用 del filename.bat 才可以, 请问这是为什么?
|
|
2007-2-17 12:59 |
|
|
spiegboy
初级用户
积分 24
发帖 9
注册 2007-2-9
状态 离线
|
『第
4 楼』:
不是把,我试验过的,在批文件中写入del %0 就可以删除文件本身,你再试试吧
|
|
2007-2-17 14:26 |
|
|
PPdos
高级用户
积分 783
发帖 268
注册 2006-12-26
状态 离线
|
『第
5 楼』:
del %~s0
|
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃. |
|
2007-2-17 17:34 |
|
|
xycoordinate
中级用户
积分 493
发帖 228
注册 2007-2-16 来自 安徽
状态 离线
|
『第
6 楼』:
谢谢!!!
厉害呀!
set 取余和for 中%i是不是一个道理!
放入批处理中都要变成%%
???
|
|
2007-2-17 21:11 |
|
|
xycoordinate
中级用户
积分 493
发帖 228
注册 2007-2-16 来自 安徽
状态 离线
|
『第
7 楼』:
再问一下:
@echo off
set syear=2008
if %smouth% == 2 (
set /a yyyy=syear%%4
if %yyyy% == 0 (
set lday=29
) else (
set ldate =28
)
)
echo %lday%
应该是29呀???
为什么显示28???
如果改写成
Quote: | @echo off
set syear=2008
set /a yyyy=syear%%4
if %smouth% == 2 (
if %yyyy% == 0 (
set lday=29
) else (
set ldate =28
)
)
echo %lday% |
|
就OK!!!
为什么 set /a yyyy=syear%%4放在if里就不行呢???
[ Last edited by xycoordinate on 2007-2-17 at 09:28 PM ]
|
|
2007-2-17 21:29 |
|
|
gne3
高级用户
DOS学徒
积分 526
发帖 252
注册 2007-2-12
状态 离线
|
|
2007-2-17 21:52 |
|
|
3742668
荣誉版主
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第
9 楼』:
Quote: | Originally posted by xycoordinate at 2007-2-17 21:29:
再问一下:
@echo off
set syear=2008
if %smouth% == 2 (
set yyyy=syear%%4
if %yyyy% == 0 (
set lday=29
) else (
set ldate =28
)
)
echo %lday%
应该是29呀?? ... |
|
因为if语句实际上都在一行上,只不过你的写法上把它分为了几行。
在同一行上的多次对变量的操作存在一个变量延迟的问题,比如:
set str=cn-dos.net && echo %str%
就只会在屏幕上打印%str%而不是cn-dos.net,你的代码中应该就是与此类似的情况。
建议可以先用setlocal ENABLEDELAYEDEXPANSION启用延迟的环境变量,然后在if语句中用!!来代替%%试试。
|
|
2007-2-18 07:24 |
|
|
xycoordinate
中级用户
积分 493
发帖 228
注册 2007-2-16 来自 安徽
状态 离线
|
『第
10 楼』:
Quote: | 建议可以先用setlocal ENABLEDELAYEDEXPANSION启用延迟的环境变量,然后在if语句中用!!来代替%%试试 |
|
这个我要好好学学!没有听过!
谢谢!
test.bat
Quote: | @echo off
set syear=2008
set smouth=2
if %smouth% == 2 (
set /a yyyy=syear%%4
if %yyyy% == 0 (set lday=29) else (set ldate =28)
)
echo %lday% |
|
CMD:
\>test.bat
此时不应有 (set。
??????
[ Last edited by xycoordinate on 2007-2-17 at 09:28 PM ]
|
|
2007-2-18 09:27 |
|