[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Script to copy URL link to multiple computers

Posted on 2010-09-23
9
Medium Priority
?
644 Views
Last Modified: 2012-05-10
I am creating a script to copy a URL shortcut to about 50 pcs, I would keep the list names in a txt file -->  "CopyFilesPcList.txt"

I get an error
LINE 15..... Unterminated string constant
Const ComputersList = "C:\sysadmin\CopyFilesPcList.txt"
Const SourceFile = "C:\sysadmin\Isolations.url"
Const TargetFolder = "C:sysadmin\"
Const ReportFile = "C:\sysadmin\CopyFilesLog.txt"
 
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.CreateTextFile (ReportFile)
arrComputers = Split(objFSO.OpenTextFile(ComputersList).ReadAll, vbNewLine)
 
For Each PC in arrComputers
  objFile.WriteLine "Attempting copy to " & PC
  On Error Resume Next
  objFSO.CopyFile SourceFile, "\\" & PC & "\" & Replace(TargetFolder, ":\","$\")
  If Err.Number <> 0 Then
    objFile.WriteLine vbTab & "Failed to copy to " & PC"
  Else
    objFile.WriteLine vbTab & "File successfully copied to " & PC
  End If
  On Error Goto 0
Next
 
objFile.Close

Open in new window

0
Comment
Question by:epicazo
[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
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 4

Assisted Solution

by:Cristi_E
Cristi_E earned 500 total points
ID: 33747595
Hi epicazo,
Try to replace the line 15 with this one:
objFile.WriteLine vbTab & "Failed to copy to PC"
and line 17 with this one:
objFile.WriteLine vbTab & "File successfully copied to PC"
I don't see any PC variable so you can treat it as text.


I hope it will help!
All the best!
0
 
LVL 4

Expert Comment

by:Cristi_E
ID: 33747682
Now i saw it on line 10 !!!!!!!
So you just need to change the line 15 with this one:
    objFile.WriteLine vbTab & "Failed to copy to " & PC

Thanks!
0
 
LVL 11

Expert Comment

by:TheGorby
ID: 33748101
FYI anytime you get that 'Unterminated string constant ' error, it usually means you've got an extra or missing quote mark on one of your strings somewhere.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 65

Expert Comment

by:RobSampson
ID: 33749927
Cristi_E is right, you just had an extra quote on the end of line 15.   Removing that will solve your problem.

FYI, you're also missing a slash in the target folder.  This line
Const TargetFolder = "C:sysadmin\"

should be
Const TargetFolder = "C:\sysadmin\"

Regards,

Rob.
0
 

Author Comment

by:epicazo
ID: 33755863
I made the corrections, but for some reason I get an error in my log

Attempting copy to thebest1
      Failed to copy to \\thebest1\C$\Documents and Settings\All Users\Desktop

I do have access to the computer when I type "\\thebest1\C$\Documents and Settings\All Users\Desktop"

Here is my updated code
Const ComputersList = "C:\sysadmin\CopyFilesComputers.txt"
Const SourceFile = "C:\sysadmin\Isolations.url"
Const TargetFolder = "C$\Documents and Settings\All Users\Desktop"
Const ReportFile = "C:\sysadmin\CopyFilesLog.txt"
 
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.CreateTextFile (ReportFile)
arrComputers = Split(objFSO.OpenTextFile(ComputersList).ReadAll, vbNewLine)
 
For Each PC in arrComputers
  objFile.WriteLine "Attempting copy to " & PC
  On Error Resume Next
  objFSO.CopyFile SourceFile, "\\" & PC & "\" & Replace(TargetFolder, ":\","$\")
  If Err.Number <> 0 Then
    objFile.WriteLine vbTab & "Failed to copy to \\"  & PC & "\" & Replace(TargetFolder, ":\","$\")
  Else
    objFile.WriteLine vbTab & "File successfully copied to " & PC & "\" & Replace(TargetFolder, ":\","$\")
  End If
  On Error Goto 0
Next
 
objFile.Close

Open in new window

0
 
LVL 4

Expert Comment

by:Cristi_E
ID: 33757503
It would be useful to see the error number and description.
Just temporary replace the line 15 with this one and paste back the result:
    objFile.WriteLine vbTab & "Failed to copy to \\"  & PC & "\" & Replace(TargetFolder, ":\","$\") & " --> Number: " & Err.Number & ", Description: " & Err.Description

0
 

Author Comment

by:epicazo
ID: 33758189
hmmm?    what is strange is that I am able to copy/past into that folder..

here is the error:
--> Number: 70, Description: Permission denied
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 500 total points
ID: 33759018
Hi, do you know if the PC is actually on?

Try this. I have added a Ping function.

Oh, and you also needed the trailing slash on the TargetFolder.

Regards,

Rob.
Const ComputersList = "C:\sysadmin\CopyFilesComputers.txt"
Const SourceFile = "C:\sysadmin\Isolations.url"
Const TargetFolder = "C:\Documents and Settings\All Users\Desktop\"
Const ReportFile = "C:\sysadmin\CopyFilesLog.txt"

If Right(TargetFolder, 1) <> "\" Then TargetFolder = TargetFolder & "\"	
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.CreateTextFile (ReportFile)
arrComputers = Split(objFSO.OpenTextFile(ComputersList).ReadAll, vbNewLine)
 
For Each PC in arrComputers
	If Trim(PC) <> "" Then
		If Ping(PC) = True Then
			objFile.WriteLine "Attempting copy to " & PC
			On Error Resume Next
			objFSO.CopyFile SourceFile, "\\" & PC & "\" & Replace(TargetFolder, ":\","$\")
			If Err.Number <> 0 Then
				objFile.WriteLine vbTab & "Failed to copy to \\"  & PC & "\" & Replace(TargetFolder, ":\","$\")
			Else
				objFile.WriteLine vbTab & "File successfully copied to " & PC & "\" & Replace(TargetFolder, ":\","$\")
			End If
			Err.Clear
			On Error Goto 0
		Else
			objFile.WriteLine vbTab & PC & " is offline"
		End If
	End If
Next
 
objFile.Close

Function Ping(strComputer)
	Dim objShell, boolCode
	Set objShell = CreateObject("WScript.Shell")
	boolCode = objShell.Run("Ping -n 1 -w 300 " & strComputer, 0, True)
	If boolCode = 0 Then
		Ping = True
	Else
		Ping = False
	End If
End Function

Open in new window

0
 

Author Closing Comment

by:epicazo
ID: 33774816
thank you all for yor help.  I split the points
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

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

I don't know if many of you have made the great mistake of using the Cisco Thin Client model with the management software VXC. If you have then you are probably more then familiar with the incredibly clunky interface, the numerous work arounds, and …
Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
Windows 8 comes with a dramatically different user interface known as Metro. Notably missing from the new interface is a Start button and Start Menu. Many users do not like it, much preferring the interface of earlier versions — Windows 7, Windows X…
Windows 8 came with a dramatically different user interface known as Metro. Notably missing from that interface was a Start button and Start Menu. Microsoft responded to negative user feedback of the Metro interface, bringing back the Start button a…

656 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