Jump to content

Convert Bat ../??


Recommended Posts

How to Convert this Bat File :

@echo off

set Win="Winpe"

For /F "tokens=3 delims= " %%1 in ('bcdedit.exe /create /application OSLOADER /d %Win%') do set guid1=%%1

echo %guid1%

pause

into AutoIt Script..

My script Always error.. :P

Local $Win = "WinGhoster"
RunWait (@ComSpec & " /c " & "For /F tokens=3 delims=  %%1 in  ( "' bcdedit.exe /create /application OSLOADER /d ' & $Win "")

error.. :party:

Please.. :mellow:

Link to comment
Share on other sites

The delimiter needs the literal double quotes around it:

Local $Win = "WinGhoster"
RunWait (@ComSpec & ' /k For /F "tokens=3 delims= " %%1 in ('' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do echo %%1")

Note single quotes enclosing literal double quotes, doubled single quotes to get a literal single quote. The string appended after $Win is enclosed with double qoutes and includes a literal single quote. (Yes, this stuff can get confusing!)

:mellow:

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

The delimiter needs the literal double quotes around it:

Local $Win = "WinGhoster"
RunWait (@ComSpec & ' /k For /F "tokens=3 delims= " %%1 in ('' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do echo %%1")

Note single quotes enclosing literal double quotes, doubled single quotes to get a literal single quote. The string appended after $Win is enclosed with double qoutes and includes a literal single quote. (Yes, this stuff can get confusing!)

:P

How to pause cmd with autoit ?? I want see message in cmd ?? :mellow:

if i run

Local $Win = "WinGhoster"
RunWait (@ComSpec & ' /k For /F "tokens=3 delims= " %%1 in ('' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do echo %%1") ;<< 1
RunWait (@ComSpec & ' /k pause') ; << 2

will Open new cmd and pause it.. How to pause cmd in ;<< 1

Link to comment
Share on other sites

You don't need a pause if you use " /k " vice " /c " to start the shell. It leaves the shell open after execution until you close it:

RunWait (@ComSpec & ' /k DIR')

:mellow:

Edit: Missing closing paren

Edited by PsaltyDS
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
$Win = "WinGhoster"
Local $cmd1 = ' /c @For /F "tokens=3 delims= " %1 in  ( '' bcdedit.exe /create /application OSLOADER /d ' & $Win  & "') do set guid1=%1"
Local $MyRead
$PID = Run(@ComSpec & $CMD1, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 471, 90, 224, 333)
$Button1 = GUICtrlCreateButton("Run", 8, 40, 81, 33, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 16, 8, 441, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $MyRead = StdoutRead($PID)
            If @error Then ExitLoop
            GUICtrlSetData($Input1, $MyRead)
            MsgBox(0, "STDERR read:", $MyRead)
    EndSwitch
WEnd

How To Disable $STDERR_CHILD + $STDOUT_CHILD

Only Show in $Input1..

In $Input1 = C:\Users\Name\Desktop>set guid1={30a2fe17-73c9-11df-9464-001e33ba0d14}

I want delete C:\Users\Name\Desktop>set guid1={} Only Show 30a2fe17-73c9-11df-9464-001e33ba0d14

Please.... :P:mellow:

Link to comment
Share on other sites

Your handling of the output makes no sense. Do StdOutRead() outside of the $nMsg cases so you are collecting the results whether $Button1 is hit or not.

:mellow:

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Extracting the string you want would just be:

$sTxt = "C:\Users\Name\Desktop>set guid1={30a2fe17-73c9-11df-9464-001e33ba0d14}"
$sTxt = StringTrimLeft($sTxt, StringInStr($sTxt, "{"))
$sTxt = StringLeft($sTxt, StringInStr($sTxt, "}") - 1)
ConsoleWrite("$sTxt = " & $sTxt & @LF)

It could also be done with StringRegExp() or _StringBetween(), but this is simpler.

:mellow:

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...