Solved

VB Script help needed!

Posted on 2014-01-13
10
401 Views
Last Modified: 2014-09-19
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"
0
Comment
Question by:rcolving
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
10 Comments
 
LVL 10

Expert Comment

by:remmett70
ID: 39777773
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
0
 

Author Comment

by:rcolving
ID: 39779018
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
0
 

Author Comment

by:rcolving
ID: 39779081
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
0
[Live Webinar] The Cloud Skills Gap

As Cloud technologies come of age, business leaders grapple with the impact it has on their team's skills and the gap associated with the use of a cloud platform.

Join experts from 451 Research and Concerto Cloud Services on July 27th where we will examine fact and fiction.

 
LVL 10

Expert Comment

by:remmett70
ID: 39779452
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
0
 

Author Comment

by:rcolving
ID: 39779543
I get the following Error
Line: 6
Char: 4
Error: Expected 'While', 'Until' or end of statement
Code: 800A0404
Source: Microsoft VBScript compilation err
0
 
LVL 10

Expert Comment

by:remmett70
ID: 39779638
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
0
 

Author Comment

by:rcolving
ID: 39779749
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
0
 
LVL 10

Accepted Solution

by:
remmett70 earned 250 total points
ID: 39779879
Add this to the beginning of the script.

Set WSHNetwork = CreateObject ("WScript.Network")
0
 

Author Closing Comment

by:rcolving
ID: 39779944
Remmett70 was patient and very helpful with my attempt at vb scripting.  Couldn't have done it without him/her.
0
 

Expert Comment

by:TFHDIT
ID: 40333286
@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

0

Featured Post

Enroll in July's Course of the Month

July's Course of the Month is now available! Enroll to learn HTML5 and prepare for certification. It's free for Premium Members, Team Accounts, and Qualified Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Progress
Starting up a Project

626 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question