Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

I need a VB script that uses the RenComp.exe tool

Posted on 2004-04-05
15
Medium Priority
?
956 Views
Last Modified: 2008-03-03
Would like to add sort of a GUI to RenComp.exe.  Script should
1 – Ask for old computer name
2 – Then ask for new computer name
3 – Rename computer name and give a pop up confirmation
4- Prompt for next computer name and log all successful & unsuccessful attempts

Old script notes:

Dim objExcel, strPathExcel, objFile
Dim fso, ts, fso2, ts2
Const ForWriting = 8
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set objExcel = CreateObject("Excel.Application")
strPathExcel = "\\DS\ADLookup\ADLookupR.xls"
objExcel.Workbooks.open strPathExcel
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
Set SH = CreateObject("WScript.Shell")

row = 1

newName = ""

Do While Trim(objSheet.cells(row, 1).Value) <> ""
   CName = objSheet.cells(row, 1)
   newName = Trim(objSheet.cells(row, 5).Value)
   
   If objSheet.cells(row, 6) <> "CHANGED" Then

      SH.Run "cmd /c RENCOMP " + CName + " " + newName + " >c:\temp.tmp", 1, True

      Set ts = fso.OpenTextFile("c:\temp.tmp", ForReading, True)
      a = ts.ReadLine()
      ts.Close

      If InStr(a, "Failed") > 0 Then
         MsgBox ("Failed to rename " + CName + " to " + newName + "!")
         objSheet.cells(row, 6) = ""
         objSheet.cells(row, 7) = ""
      Else
         MsgBox ("Successfully renamed " + CName + " to " + newName + "!")
         objSheet.cells(row, 6) = "CHANGED"
         objSheet.cells(row, 7) = Trim(CStr(Now))
      End If
   End If

   row = row + 1
Loop

objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close
MsgBox ("Script complete.")

0
Comment
Question by:Roebuck1967
15 Comments
 
LVL 57

Expert Comment

by:Pete Long
ID: 10760918
No offence - but why arnt you asking this in the VB TA?
0
 

Author Comment

by:Roebuck1967
ID: 10760950
Because only one person can answer this question and he knows where to find it.
0
 

Author Comment

by:Roebuck1967
ID: 10761253
Feel free to move it to VB
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 16

Expert Comment

by:The--Captain
ID: 10761331
looks like someone beat me to it...  Hope you find more contributions here in VB.

Cheers,
-Jon

0
 
LVL 11

Expert Comment

by:YohanShminge
ID: 10761752
Hi guys!

Yeah, I was looking in the Networking section, Roebuck1967, but I didnt see your new question!  I've been thinking you might move these over to VB so you'd be more likely to get help, as long as they're not too networking-involved.  Buy anyway...

This new script you want, it sounds easy enough, but let can you clarify a few things...
1) Do you no longer want to use the excel file as your source for computer names?
2) How do you want to log attempts? Excel or text file?
3) How many times should the script prompt for computer names?
0
 

Author Comment

by:Roebuck1967
ID: 10762297
YohanShminge,
1 - Would like to start with a fresh excel file
2 - Via excel
3 - Prompt until cancel is selected

Would loke to have this a click option on my computer that would exicute
0
 
LVL 11

Expert Comment

by:YohanShminge
ID: 10762385
OK, I think this is what you want.

--------------------------------

Dim objExcel, strPathExcel, objFile
Dim fso, ts, fso2, ts2
Const ForReading = 1
Set objExcel = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Set SH = CreateObject("WScript.Shell")

strPathExcel = "C:\changelog.xls"

objExcel.Workbooks.open strPathExcel
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

Do
   currentC = InputBox("Please enter the current computer name.")
   If currentC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If
   newC = InputBox("Please enter the new computer name.")
   If newC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If

   SH.Run "cmd /c C:\RENCOMP " + currentC + " " + newC + " >c:\temp.tmp", 1, True

   Set ts = fso.OpenTextFile("c:\temp.tmp", ForReading, True)
   a = ts.ReadLine()
   ts.Close

   For row = 1 To 10000
      If objSheet.cells(row, 1) = "" Then Exit For
   Next

   If InStr(a, "Failed") > 0 Then
      MsgBox ("Failed to rename " + currentC + " to " + newC + "!")
      objSheet.cells(row, 1) = "FAILED"
      objSheet.cells(row, 2) = currentC
      objSheet.cells(row, 3) = newC
      objSheet.cells(row, 4) = Trim(CStr(Now))
   Else
      MsgBox ("Successfully renamed " + currentC + " to " + newC + "!")
      objSheet.cells(row, 1) = "CHANGED"
      objSheet.cells(row, 2) = currentC
      objSheet.cells(row, 3) = newC
      objSheet.cells(row, 4) = Trim(CStr(Now))
   End If
   objExcel.ActiveWorkbook.Save
Loop Until currentC = ""
0
 

Author Comment

by:Roebuck1967
ID: 10764565
YohanShminge

I receive the following error after I enter the new computer name
Line 28
Char 4
Error: Input past end file
code: 800A003E
0
 

Author Comment

by:Roebuck1967
ID: 10764608
YohanShminge

Scratch that last question - I have it working.

Would kike to tweek things a bit


1) When It prompts for the second computer name can you have "TAKING-" (without the quotes) in the field?
2) Anywhat to have the script promt Yes or No to remove the old name from the domain?

Thanks
0
 
LVL 11

Accepted Solution

by:
YohanShminge earned 2000 total points
ID: 10765934
1) Replace these lines:

   currentC = InputBox("Please enter the current computer name.")
   If currentC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If
   newC = InputBox("Please enter the new computer name.")
   If newC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If

With these to add TAKING-

   currentC = InputBox("Please enter the current computer name.", "Old Name")
   If currentC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If
   newC = InputBox("Please enter the new computer name.", "New Name", "TAKING-")
   If newC = "" Then
      objExcel.ActiveWorkbook.Close
      WScript.Quit
   End If

2) I don't have RENCOMP here right now to check, but is it possible to change name without removing the old?  If so, it would be easy to add to the code, just let me know.
0
 

Author Comment

by:Roebuck1967
ID: 10766466
YohanShminge does it again.  A million thanks!

0
 

Author Comment

by:Roebuck1967
ID: 10766471
YohanShminge

You have done it again.  A million thanks!
0
 
LVL 11

Expert Comment

by:YohanShminge
ID: 10768647
So I take it the script worked?  That's great!
0
 

Author Comment

by:Roebuck1967
ID: 11000397
YohanShminge,

Long time - Hope all is well.  I'm posting a new question today.
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses

916 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