jxpxfeiw 发表于 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 编辑 ]

jxpxfeiw 发表于 2009-3-2 19:39:10

晕 好麻烦,谁有好的方法啊

[ 本帖最后由 jxpxfeiw 于 2009-3-2 20:59 编辑 ]

xinlu8439 发表于 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

xayle 发表于 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)

xayle 发表于 2009-3-3 03:56:01



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

这个也可以

sxd 发表于 2009-3-3 04:28:03

正则匹配读取

jxpxfeiw 发表于 2009-3-3 09:36:56

用stringInStr函数比较两个字符串,好象没用
我自己慢慢琢磨吧。不过还是谢谢你们

jxpxfeiw 发表于 2009-3-3 10:17:16

好了 我已经自己解决了

xnvnx 发表于 2009-11-26 12:32:58

很多人看帖,有答案,应该发下,一起交流啊8#
发表于 2009-3-3 10:17 | 只看该作者
好了 我已经自己解决了

yufei8051 发表于 2014-4-25 16:28:50

就是啊,,,

yufei8051 发表于 2014-4-25 16:29:03

回复 9# xnvnx
页: [1]
查看完整版本: 如何读取文本里指定部分的字符串?