|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
16 楼』:
那就是说for语句是在C:\bea\weblogic91\common\bin\wlst.cmd startserver.py输出的信息中找 并不是我想要的在startserver.py中找变量status 并获取status的值是吧
|
|
2006-11-8 00:22 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
17 楼』:
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 文本第一行的内容。
这也是取得(交换)变量的一种方法。
C:\TEMP\put>type a.txt
My name is Redtek~:)
C:\TEMP\put>set /p 我的名字=<a.txt
C:\TEMP\put>echo %我的名字%
My name is Redtek~:) [ Last edited by redtek on 2006-11-8 at 12:41 AM ]
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-11-8 00:32 |
|
|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
18 楼』:
现在我同过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中存放的是哪个 是去后者吗
|
|
2006-11-8 01:09 |
|
|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
19 楼』:
是不是在for语句后面加set state=就把变量%i赋给state了
也就是现在state就是RUNNING或C:\bestway\jcl>ENDLOCAL
|
|
2006-11-8 01:12 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
20 楼』:
模拟建了一个多行数据文件 a.txt (代表你要取的含有RUNNING字串的输出信息)
C:\TEMP\put>type a.txt
a
b
c
d
e
f
g 你看到上面 a.txt 有多行,最后一行是g。
直接在命令行取得 a.txt 多行内容并赋值给名为“变量”的一个变量。
C:\TEMP\put>for /f %i in (a.txt) do set 变量=%i
(仔细看:上面一行命令是执行。下面这些输出是上面for执行时的赋值过程:)
C:\TEMP\put>set 变量=a
C:\TEMP\put>set 变量=b
C:\TEMP\put>set 变量=c
C:\TEMP\put>set 变量=d
C:\TEMP\put>set 变量=e
C:\TEMP\put>set 变量=f
C:\TEMP\put>set 变量=g 你看到for执行时是依次将取得的a.txt内容赋给变量,
因为是多次赋值给同一个变量,所以最后一句: set 变量=g已经将前面赋的值都“冲了”,全被g这个字符给取代了。
C:\TEMP\put>echo %变量%
g 上面显示一下变量内容,结果是最后一次取得的内容: g
所以,你上面的for依次赋值得到的只能是最后一行的有效输出。
所以,for ...skip=跳过行数 可以解决部分固定输出行数不变的某个指定行的内容。
所以,if [RUNNING] == [%%i] 也可以解决非赋值的情况下直字串精确匹配查找%%i中是否拥有你要找的内容。
但,好象想起了你一次想判断Weblogic服务器是否正常正在运行时的标置的贴子,
如果此贴与如上所指的贴子有与判断weblogic服务器是否正常启动有关联的话,
那么你这么做在走很大的弯路。
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-11-8 01:32 |
|
|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
21 楼』:
没错先前的那贴子 我是用netstat -na | findstr ":80 "来判断Weblogic是否启动成功
可后来上司说要在脚本中实现判断启动与否
所以现在就想方设法 把脚本的判断结果取出来 没办法
可是我想要RUNNING这个结果 可现在%%i的值是C:\bestway\jcl>ENDLOCA
能不能把C:\bestway\jcl>ENDLOCA删掉
|
|
2006-11-8 01:46 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
22 楼』:
这是一个查找通过for..()取得的输出信息中所返回字符串中是否有你指定的字符串的值……
可替换成你所指定的如RUN……什么的内容。
(下面代码只是原理,具体要做什么sunyao兄可以再重新编写更适合的内容~:)
(代码中 if 是与大小写无关的精确匹配,如果需要模糊匹配可用find或findstr或字符替换等方式进行)
@echo off
set 服务器状态=没有启动
for /f %%i in (a.txt) do (
if /i [%%i]==[你要找的RUNNING什么的字符串] ( set 服务器状态=启动 )
)
echo %服务器状态%
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-11-8 02:58 |
|
|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
23 楼』:
for /f "skip=34 delims=" %%i in ('C:\bea\weblogic91\common\bin\wlst.cmd startserver.py') do (
if /i "%i"=="RUNNING" ( set state="RUNNING" )
)
我试试行不行
|
|
2006-11-8 03:17 |
|
|
sunyao
初级用户
积分 141
发帖 60
注册 2006-10-28 来自 天津
状态 离线
|
『第
24 楼』:
试过了 成功 !!!
感谢redtek兄!!!!
再看看有没有其他问题
没事 就开始做停止的脚本
|
|
2006-11-8 04:37 |
|
|
honhaizh
初级用户
积分 35
发帖 18
注册 2006-4-26
状态 离线
|
|
2006-11-16 20:28 |
|
|
hxuan999
中级用户
DOS之日
积分 337
发帖 161
注册 2006-11-4
状态 离线
|
『第
26 楼』:
我正想找这个呢
|
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul |
|
2006-11-23 00:44 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
27 楼』:
都开始讨论 WebLogic 了啊,高科技~~
|
C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2006-11-23 07:20 |
|