找回密码
 加入
搜索
查看: 2442|回复: 10

如何读取文本里指定部分的字符串?

[复制链接]
发表于 2009-3-2 19:20:03 | 显示全部楼层 |阅读模式
Microsoft iSCSI Initiator version 2.0 Build 1653

Total of 1 sessions

Session Id             : ffffffff8215b47c-4000013700000004
Initiator Node Name    : iqn.1991-05.com.microsoft:0104
Target Node Name       : (null)
Target Name            : iqn.2005-02.com.ricecake.iscsi:00
ISID                   : 40 00 01 37 00 00
TSID                   : f5 2e
Number Connections     : 1

    Connections:
        Connection Id     : ffffffff8215b47c-3
        Initiator Portal  : 0.0.0.0/2948
        Target Portal     : 192.168.1.253/3260
        CID               : 01 00


这是ISCS运行iscsicli sessionlist /?命令得到的内容,我要读取含有“Session Id”这个字符串的内容,也就是Session Id             : ffffffff8215b47c-4000013700000004该怎么写,ISCSI的版本不同,输出内容的行数也不定哦,别想用Filereadline这个函数。还有就是没断开一次生成的“Session Id ”都不同

如果有可能麻烦看下可不可以把下面两个批处理内容转换成AU3代码
① iscsicli sessionlist|find "Session Id">C:\SID.txt
基本意思:运行iscsicli sessionlist得到上面显示的内容,Find查找“Session Id”这个字符串,然后把“Session Id”这行的内容输出。

② for /f "usebackq delims=: tokens=2" %%i in (`iscsicli SessionList^|find /i "Session Id"`) do iscsicli LogoutTarget %%i
这个高手应该看得懂 ,我也不好怎么解释了,表达能力有限

[ 本帖最后由 jxpxfeiw 于 2009-3-3 10:17 编辑 ]
 楼主| 发表于 2009-3-2 19:39:10 | 显示全部楼层
晕 好麻烦,谁有好的方法啊

[ 本帖最后由 jxpxfeiw 于 2009-3-2 20:59 编辑 ]
发表于 2009-3-2 23:24:21 | 显示全部楼层
#include <Constants.au3>
Local $foo = Run(@ComSpec & " /c iscsicli sessionlist ", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    if stringInStr($line, "Session Id", 0) Then Msgbox(0, Default, $line)
Wend
发表于 2009-3-3 03:53:46 | 显示全部楼层
机器上没iscsi客户端,没法测试.

#include <Constants.au3>
Local $foo, $line, $lines = "", $sessid
$foo = Run(@ComSpec & "/c iscsicli sessionlist /?", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
        $lines &= $line
Wend
MsgBox(0,0,$lines)
$sessid = StringRegExp($lines, "Session\sId.*\:\s(.*)", 3)
Msgbox(0, 0, $sessid[0])
发表于 2009-3-3 03:56:01 | 显示全部楼层


StringRegExp($lines, "Session.Id.*\:.(.*)", 3)

这个也可以
发表于 2009-3-3 04:28:03 | 显示全部楼层
正则匹配读取
 楼主| 发表于 2009-3-3 09:36:56 | 显示全部楼层
用stringInStr函数比较两个字符串,好象没用
我自己慢慢琢磨吧。不过还是谢谢你们
 楼主| 发表于 2009-3-3 10:17:16 | 显示全部楼层
好了 我已经自己解决了
发表于 2009-11-26 12:32:58 | 显示全部楼层
很多人看帖,有答案,应该发下,一起交流啊
8#
发表于 2009-3-3 10:17 | 只看该作者
好了 我已经自己解决了
发表于 2014-4-25 16:28:50 | 显示全部楼层
就是啊,,,
发表于 2014-4-25 16:29:03 | 显示全部楼层
回复 9# xnvnx
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 01:43 , Processed in 0.071529 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表