kgreer

help with StringRegExp()

6 posts in this topic

I am trying to get the default printer name from the below command line output.  I can capture the outpupt by using StdoutRead(), but I just want the value after "The default printer is ".  I can use stringsplit($sOutput,"default printer is",1) and get the data from the returned array which works fine, but I want to use StringRegExp(), and I'm having trouble figuring out the logic and I'm hoping to hear from someone with a better understanding on the logic to use with StringRegExp().

So, using StringRegExp(), how can I just get the value ServerPrinter?  I thought something like StringRegExp($sOutput,"(?:The default printer is)(*)",1) but this does not work and just returns 0

 

Microsoft ® Windows Script Host Version 5.8
Copyright © Microsoft Corporation. All rights reserved.

The default printer is ServerPrinter

Share this post


Link to post
Share on other sites



Show the VBScript used to generate that text and you can probably do it completely in AutoIt without having to get it from VBScript.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

$sStr = "The default printer is \\Server\Printer"

msgbox(0 , '' , StringRegExp($sStr , "The default printer is (.*)" , 3)[0])

look at the flags again for stringregexp.

Edited by boththose

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

You can use this snippet to show you which printer is set as the default printer.

$strComputer = @ComputerName
Global $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
Global $colItems = $objWMIService.ExecQuery("Select * from Win32_Printer")
For $objItem In $colItems
    If $objItem.Default = "True" Then
        ConsoleWrite("Default: " & $objItem.Name & " is the default printer" & @CRLF)
    EndIf
Next

No need for VBScripts and the StdOut to figure it out. $objItem.Default will return true for the default printer, and then $objItem.Name will tell you which printer it is.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

@ BrewManNH

I'm writing a printer management utility and I'm using the Windows included vbs scripts and command line switches to manage the printers.

https://technet.microsoft.com/en-us/library/cc725868.aspx

Thanks for the autoit example. I want to learn more about WMI and objget().  I am actually using many functions from the vbs print management scripts, but it would be nice to eventually only perform the tasks from within autoit.

@ boththose and Zedna,

those work perfectly!  Thank you for the help.

your one liner

msgbox(0 , '' , StringRegExp($sStr , "The default printer is (.*)" , 3)[0])

 

beats my attempt using

 $output = StringSplit($sOutput, "default printer is", 1)
 $output = StringSplit($output[2], "\", 1)
msgbox(0,"",$output[UBound($output) - 1])

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