Solved

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

Posted on 2004-04-05
15
951 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
[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
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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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 500 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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
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…

752 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