Avatar of rcolving
rcolving
 asked on

VB Script help needed!

I need to have a script that looks at a specific line in a ini file and depending on that line set the default printer.  I have the scripting for setting the printer figured out but cant come up with the If statements.  The Set default printer script should follow this rule

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\CPSI\cptermw.ini", ForReading)

Do Until objTextfile.At EndOfStream
     strNextLine = objTextFile.Readline

intLineFinder = Instr(strNextLine, "TTYREAL")
If intLineFinder = 991 Then  
Set WSHNetwork = CreateObject ("WScript.Network")
WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"

If intLineFinder =992 Then
Set WSHNetwork = CreateObject ("WScript.Network")
WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In_2"

If intLineFinder = 993 then
Set WSHNetwork = CreateObject ("WScript.Network")
WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"
Programming

Avatar of undefined
Last Comment
TFHDIT

8/22/2022 - Mon
remmett70

Instead of an If statement.  You could use a Select Case statement


Set WSHNetwork = CreateObject ("WScript.Network")

intLineFinder = intLineFinder = Instr(strNextLine, "TTYREAL")

Select Case intLineFinder
      Case "991"  WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"
      Case "992"  WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In_2"
      Case "993"  WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"
End Select
rcolving

ASKER
I'll give that a try will I still need -

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\CPSI\cptermw.ini", ForReading)

Do Until objTextfile.At EndOfStream
     strNextLine = objTextFile.Readline
rcolving

ASKER
Ok not working, shoot!  I'm a real novice a vb scripting so need a little guidance! There is a line in the ini file, filename is cpermw.ini, that I have to use to set the default printer.  The area in the ini file looks like the text below -

[TTY Configuration]
TTYREAL=

This value can be 991, 992, or 993.  I'm trying to get my script to look at the  TTYREAL value and want to set the default printer accordingly.  I like the idea of the Select case but can't get the script right to look at or find that line in the ini file located at c:\CPSI\cptermw.ini.  Any help would be appreciated.

I've attached the ini file and my vb script file.
Cptermw.ini
Set-Default-Printers-test.vbs
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
remmett70

Try this

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\CPSI\cptermw.ini")

Do Until objTextFile.AtEndOfStream
  strLine = objTextFile.Readline
    Select Case strLine
      Case "TTYREAL=991" WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"
        Case "TTYREAL=992" WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In_2"
      Case "TTYREAL=993" WSHNetwork.SetDefaultPrinter "Specialty_Clinic_Check-In 1"
    End Select
Loop
objTextFile.Close
rcolving

ASKER
I get the following Error
Line: 6
Char: 4
Error: Expected 'While', 'Until' or end of statement
Code: 800A0404
Source: Microsoft VBScript compilation err
remmett70

Did you copy and Paste or type this into your script manually?  That error is acting like there is a mistype in the Do line.

Make sure that line is
 
Do Until
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
rcolving

ASKER
You were right had an extra character so I copy and pasted now get-

Line: 8
Char: 28
Error: Object required: "
Code: 800A01A8
Source: Microsoft VBScript runtime error


I've attached screen print of printers
Printers.docx
ASKER CERTIFIED SOLUTION
remmett70

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
rcolving

ASKER
Remmett70 was patient and very helpful with my attempt at vb scripting.  Couldn't have done it without him/her.
TFHDIT

@rcolving Here is a PowerShell version.

if ([string]$r = Select-String \\path\to\the\file.ini -Pattern $env:COMPUTERNAME -Context 0,1) {
    $tty = $r.substring($r.indexOf("=")+1,3)
}

Open in new window

Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy