2016-11-10 5 views
-1

Я работаю над некоторым кодом AutoIt, чтобы помочь мне с офисными шалостями и т. Д. Первая строка работает, чтобы переписать строку «shutdown pc00xxx» в shutdown /r /m pc00xxx /t 0, но я не могу получить вторую строку для повтора.Переписывание строки в AutoIt работает один раз, но не во второй раз

У меня есть следующий код:

func RunProc($string) 
    Local $command = StringLower($string) 
    Local $subs = StringMid($command, 1, 4) 
    Local $computer = StringInStr($command, "pc") 

    if $subs == "shut" Then 

     Run("shutdown /r /m " & StringMid($command, $computer) & " /t 0") 

    ElseIf $subs == "clos" Then 

     Local $prleft = StringTrimLeft($command, 6) 
     Local $extend = StringInStr($command, "on") 
     Local $pright = StringTrimRight($prleft, $extend) 
     Local $strclose = StringMid($string, $prleft, $pright) 
     Run("taskkill.exe /S "& StringMid($command, $computer) & " /im " & $strclose & ".exe") 
    EndIf 

Проблема заключается в том, что я пытаюсь переписать фразу «ЗАКРЫТЬ„НЕЧТО“ON„pc00xxx“быть Taskkill.exe/S pc00xxx/им SOMETHING.exe , Я пытаюсь получить подстроку между «ЗАКРЫТО» и «ON pc00xxx».

Так, например, я напечатал бы ЗАКРЫТЬ ПРОГНОЗ НА PC00xxx и имеют значение $ strclose быть:

$strclose = outlook 

ответ

0

Попробуйте это:

$string = 'CLOSE OUTLOOK ON PC00xxx' 
$aMatch = StringRegExp($string, '(?i)close (.+) on pc.+', 1) 
If IsArray($aMatch) Then ConsoleWrite('App: ' & $aMatch[0] & @CRLF) 
0

В качестве альтернативы, используйте StringSplit:

$string = 'CLOSE OUTLOOK ON PC00xxx' 
$stringcomponents=StringSplit(StringStripWS($string,4)," ") 
$strclose=$stringcomponents