kgreer Posted April 14, 2015 Share Posted April 14, 2015 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 Link to comment Share on other sites More sharing options...
BrewManNH Posted April 14, 2015 Share Posted April 14, 2015 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 GudeHow 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 Link to comment Share on other sites More sharing options...
Solution iamtheky Posted April 14, 2015 Solution Share Posted April 14, 2015 (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 April 14, 2015 by boththose ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
Zedna Posted April 14, 2015 Share Posted April 14, 2015 This works fine: #include <Array.au3> $sInput = "The default printer is \\Server\Printer" $aRet = StringRegExp($sInput,"The default printer is (.*)",3) _ArrayDisplay($aRet) Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
BrewManNH Posted April 14, 2015 Share Posted April 14, 2015 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 GudeHow 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 Link to comment Share on other sites More sharing options...
kgreer Posted April 14, 2015 Author Share Posted April 14, 2015 @ 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]) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now