|
BWSkyer
中级用户
我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『楼 主』:
[求助]for命返回值判斷問題
:( 想了好久都沒有想出來,才開始學習for的使用,只好找大家幫忙了.如下
for %%i in (18 20 25) do @cksum test.bat %%i (這樣是循環對比test.bat的大小)
for %%i in (good nicer bad) do xgrep %%i test.bat (循環對比test裡面的文本)
for %%i in (good nice bad) do if ?? set thing=%%i
以上三個都是單獨的語句,我沒有連接到一起,因為都需要判斷返回值才可以運行下一個batch.
如第一個,(cksum是對比大小的)當大小為20的時候,test的文本就是nice,然後我要對比裡面是不是真的nicer,因為其他的如goodr也是20了(xgrep是文本對比),如果是對的nicer的話就set thing=nicer,這樣就結束了..
可是for的返回值是最後一個的結果,我try過,所以真的很傷腦經..到底如何判斷才完美呢???
謝謝大家幫忙.
|
My blog:左铅右椠 上善若水
My team: 519创意团队 |
|
2007-4-20 22:42 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
|
2007-4-21 00:19 |
|
|
htysm
高级用户
积分 866
发帖 415
注册 2005-12-4
状态 离线
|
『第
3 楼』:
连lxmxn兄都不明白,偶等就更糊涂了。
|
欢迎你到批处理爱好者联盟QQ群:18023953 |
|
2007-4-21 00:22 |
|
|
BWSkyer
中级用户
我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第
4 楼』:
给你们看看我没有用for写的语句
:start
(生成test.bat,其内容已限制在good,nicer,bad)
cksum /fs test.bat 20 ::判断bat档的大小,防止输入其他多余的字符
if errorlevel 1 goto other
xgrep good test.bat ::判断里面的内容是否是我要的
if errorlevel 1 goto start
set thing=good ::如果是我要的就set thing
goto end
:other
cksum /fs test.bat 21
if errorlevel 1 goto other1
xgrep nicer test.bat
if errorlevel 1 goto start
set thing=nicer
goto end
:other1
cksum /fs test.bat 13
if errorlevel 1 goto start
xgrep bad test.bat
if errorlevel 1 goto start
set thing=bad
:end
不知道大家明白了没有,很希望得到帮助,因为我也不知道用for可以完成吗? 都是返回值来判断下一步的。
[ Last edited by BWSkyer on 2007-4-21 at 09:22 PM ]
|
My blog:左铅右椠 上善若水
My team: 519创意团队 |
|
2007-4-21 05:32 |
|
|
BWSkyer
中级用户
我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第
5 楼』:
昨天晚上我的Notebook差点就挂了,所以没有来得及编辑帖子,今早起来就做好了,大家看看明白了没有。我顶上去了。
|
My blog:左铅右椠 上善若水
My team: 519创意团队 |
|
2007-4-21 21:23 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
6 楼』:
用这个形式试试:
Command1 && Command2 || Command3
注释:如果Command1运行成功(返回值是0),则运行Command2,如果运行失败(返回值大于0),就运行Command3。
|
|
2007-4-22 04:31 |
|
|
BWSkyer
中级用户
我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第
7 楼』:
lxmxn兄,怎么想都写不出这个for。。。参数我设置不出来,不知道设置那个?因为我这里会比较6个值啊。用 command1 && command2 || command3 无法判断值,还有我不说说过for是按最后一个结果来算的返回值吗?
运行成功(返回值是0),这里我我要解释,xgrep是当发现对比的参数正确的时候返回1,所以是里面的软件自己设置返回值,可能错了返回0也有可能的哦。
|
My blog:左铅右椠 上善若水
My team: 519创意团队 |
|
2007-4-22 10:21 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
8 楼』:
Re BWSkyer:
要判断这么多的返回值,用for命令当然不成。可惜的是,我到现在还没有明白你这个批处理要实现什么样的功能,尤其是几个外部工具的使用不熟悉,所以只能是作罢。
提醒一点的是:
if errorlevel 1 command1 的意思是:如果上一个命令的返回值大于等于1,则运行command1。希望对你有帮助,你多试试,相信你可以成功的。
|
|
2007-4-22 12:28 |
|
|
BWSkyer
中级用户
我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第
9 楼』:
看来FOR对返回值的处理还有一定的增强,我会再多试试,如果成功了一定告诉大家结果,谢谢lxmxn兄~~~
|
My blog:左铅右椠 上善若水
My team: 519创意团队 |
|
2007-4-23 10:47 |
|