Sign in to follow this  
Followers 0
NDog

[solved] - Return value to autoit

4 posts in this topic

#1 ·  Posted (edited)

I would like to retrieve a value from a comspec session and return it to autoit as $guid

I use this command to set %guid% in .cmd batch file

getguid.cmd

for /f "tokens=2 delims={}" %%g in  ('bcdedit.exe /create /application OSLOADER /d "WinGhoster"') do (set guid={%%g})
echo %guid%
guid={06fb46ad-634c-11e0-bb15-d235e2a65117}

I have tried reading the help file regarding stdread, however my syntax is wrong and it is not returning the whole guid to autoit. I dont know how it works, maybe someone can fix my code. Thanks.

; attempt 1 - wrong

#include <Constants.au3>

;Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

$Win = "WinGhoster"
Local $foo = Run(@ComSpec & ' " /c @for /f "tokens=2 delims={}" %1 in  ( '' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do (echo {%1})" , @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
    MsgBox(0, "STDERR read:", $line)
Wend

; attempt 2 - wrong

$Win = "WinGhoster"
Local $cmd1 = ' /c @for /f "tokens=2 delims={}" %1 in  ( '' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do (echo {%1})"

$PID = Run(@ComSpec & $cmd1, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

$guid = StdoutRead($PID)
MsgBox(0, "STDERR read:", $guid)
Edited by NDog

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

$iPID = Run(@ComSpec & $cmd1, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    ProcessWait($iPID)
    $sErrorMsg = ""
    While 1
        $sErrorMsg &= StdoutRead($iPID)
        If @error Then ExitLoop
    WEnd
    If $sErrorMsg = "" Then Exit
MsgBox(0,"",$sErrorMsg)

Would something like this work out?

Edited by System238

Things that I've done..

Icon Resource Editor: icon resource editor 

AutoIt Piano: a piano

AutoIt Unlocker: unlocks files when you want to delete them

Colorful tooltips: a wrapper for the tool tips UDF

Rouge GoogleBot: a full screen animation

ASciTE text editor: a text editor written in autoit

Warning: Posts by this user are subject to change or may disappear without notice.

Share this post


Link to post
Share on other sites

I use this command to set %guid% in .cmd batch file

getguid.cmd

for /f "tokens=2 delims={}" %%g in  ('bcdedit.exe /create /application OSLOADER /d "WinGhoster"') do (set guid={%%g})
echo %guid%
guid={06fb46ad-634c-11e0-bb15-d235e2a65117}

Maybe you can use the EnvGet function to get it into what you want.

- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

This is what I want. Also be warned if you are using a 64 bit operating system and a 32bit version of SciTE.

Thanks System238 for your advice. My code below is good enough for my use.

getguid.au3

#include <Constants.au3>

$Win = "WinGhoster"
Local $cmd1 = ' /c @for /f "tokens=2 delims={}" %1 in  ( '' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do set guid={%1}"

$iPID = Run(@ComSpec & $cmd1, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    ProcessWait($iPID)
    $sErrorMsg = ""
    While 1
        $sErrorMsg &= StdoutRead($iPID)
        If @error Then ExitLoop
    WEnd
    If $sErrorMsg = "" Then Exit
MsgBox(0,"",$sErrorMsg)

$sTxt = $sErrorMsg
$sTxt = StringTrimLeft($sTxt, StringInStr($sTxt, "{"))
$sTxt = StringLeft($sTxt, StringInStr($sTxt, "}") - 1)
MsgBox(0,"","{"&$sTxt&"}")
Edited by NDog

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0