![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-24 04:04 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 征集批处理接受脚本语言返回结果的方法! |
| 可打印版本 2,905 / 26 |
| 第16楼 sunyao | 发表于 2006-11-08 00:22 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
那就是说for语句是在C:\bea\weblogic91\common\bin\wlst.cmd startserver.py输出的信息中找 并不是我想要的在startserver.py中找变量status 并获取status的值是吧
|
|
| 第17楼 redtek | 发表于 2006-11-08 00:32 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
for /f %%i in (.......你要取得信息的途径:执行什么命令或文件来得到输出.....) do 你要用for取到的信息干什么
所以,for语句是在 for /f %%i in ( 在这里执行了什么所得到的输出的信息中找 )…… 这就是3楼electronixtar兄所说的从下面的任何一种方式中获得变量的途径: 1. 临时文件 2. 参数 3. 变量 4. 输出重定向 你通过 for ....( 取得信息的途径接口 ) do ... 这种方法可以得到一个命令或执行所输出的信息~:) 既然上面几种方法可以让你得到信息(或叫做你要获取的变量值), 那么至于怎么取得你要的信息,要看信息提供者(给你提供信息的命令或程序)是如何与你的批处理相互配合的事情了:) 获得信息的途径:(说明:第1、3、4种获得变量的方法) ) 要获得的内容在 a.txt 文件内,你可以把它当做临时文件(第1种)。 这个临时文件你可以用任何应用程序和脚本创建。 ) set /p 变量名= 赋值语句,通过了 <a.txt 重定向来得到 a.txt 文本第一行的内容。 这也是取得(交换)变量的一种方法。 [ Last edited by redtek on 2006-11-8 at 12:41 AM ] |
|
| 第18楼 sunyao | 发表于 2006-11-08 01:09 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
现在我同过for /f "skip=34 delims=" %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py') do echo %%i
语句找到 C:\bestway\jcl>echo RUNNING RUNNING C:\bestway\jcl>echo C:\bestway\jcl>ENDLOCAL C:\bestway\jcl>ENDLOCAL 其中RUNNING是我在startserver.py中用print status得到的值 应该就是我想要的 可是找出来的是两条结果RUNNING和C:\bestway\jcl>ENDLOCAL 那变量%i中存放的是哪个 是去后者吗 |
|
| 第19楼 sunyao | 发表于 2006-11-08 01:12 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
是不是在for语句后面加set state=就把变量%i赋给state了
也就是现在state就是RUNNING或C:\bestway\jcl>ENDLOCAL |
|
| 第20楼 redtek | 发表于 2006-11-08 01:32 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
模拟建了一个多行数据文件 a.txt (代表你要取的含有RUNNING字串的输出信息)
你看到上面 a.txt 有多行,最后一行是g。 直接在命令行取得 a.txt 多行内容并赋值给名为“变量”的一个变量。 你看到for执行时是依次将取得的a.txt内容赋给变量, 因为是多次赋值给同一个变量,所以最后一句: set 变量=g已经将前面赋的值都“冲了”,全被g这个字符给取代了。 上面显示一下变量内容,结果是最后一次取得的内容: g 所以,你上面的for依次赋值得到的只能是最后一行的有效输出。 所以,for ...skip=跳过行数 可以解决部分固定输出行数不变的某个指定行的内容。 所以,if == 也可以解决非赋值的情况下直字串精确匹配查找%%i中是否拥有你要找的内容。 但,好象想起了你一次想判断Weblogic服务器是否正常正在运行时的标置的贴子, 如果此贴与如上所指的贴子有与判断weblogic服务器是否正常启动有关联的话, 那么你这么做在走很大的弯路。 |
|
| 第21楼 sunyao | 发表于 2006-11-08 01:46 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
没错先前的那贴子 我是用netstat -na | findstr ":80 "来判断Weblogic是否启动成功
可后来上司说要在脚本中实现判断启动与否 所以现在就想方设法 把脚本的判断结果取出来 没办法 可是我想要RUNNING这个结果 可现在%%i的值是C:\bestway\jcl>ENDLOCA 能不能把C:\bestway\jcl>ENDLOCA删掉 |
|
| 第22楼 redtek | 发表于 2006-11-08 02:58 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
这是一个查找通过for..()取得的输出信息中所返回字符串中是否有你指定的字符串的值……
可替换成你所指定的如RUN……什么的内容。 (下面代码只是原理,具体要做什么sunyao兄可以再重新编写更适合的内容~:) (代码中 if 是与大小写无关的精确匹配,如果需要模糊匹配可用find或findstr或字符替换等方式进行) |
|
| 第23楼 sunyao | 发表于 2006-11-08 03:17 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
for /f "skip=34 delims=" %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py') do (
if /i "%i"=="RUNNING" ( set state="RUNNING" ) ) 我试试行不行 |
|
| 第24楼 sunyao | 发表于 2006-11-08 04:37 |
| 初级用户 发帖 60 积分 141 来自 天津 | |
|
试过了 成功 !!!
感谢redtek兄!!!! 再看看有没有其他问题 没事 就开始做停止的脚本 |
|
| 第25楼 honhaizh | 发表于 2006-11-16 20:28 |
| 初级用户 发帖 18 积分 35 | |
|
学习
|
|
| 第26楼 hxuan999 | 发表于 2006-11-23 00:44 |
| 中级用户 发帖 161 积分 337 | |
|
我正想找这个呢
|
|
| 第27楼 electronixtar | 发表于 2006-11-23 07:20 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
都开始讨论 WebLogic 了啊,高科技~~
|
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |