Solved

Using VBScript and FileSystemObject, can I use relative paths to copy files from one folder to another?

Posted on 2011-03-23
5
2,487 Views
Last Modified: 2012-05-11
Hello, I have the following directory structure:

C:\
    - TestSource
           FileToBeCopied.xxx
    - TestDestination
    TestCopyFile.vbs
   
I call the TestCopyFile.vbs with cscript from a DOS prompt and the .vbs contains the following:

dim objFSOPatch, testPath

tDest = ".\TestDestination\"

set objFSOPatch = CreateObject("Scripting.FileSystemObject")
objFSOPatch.CopyFile ".\TestSource\FileToBeCopied.xxx", tDest, True

set fso=Nothing

However, this does not appear to work.  Can I not use relative pathing for this?  Can someone make the change that will fix this for me, please?

Thank you!
0
Comment
Question by:RichardRiga
  • 3
  • 2
5 Comments
 
LVL 6

Expert Comment

by:HyperBPP
ID: 35199785
0
 
LVL 6

Accepted Solution

by:
HyperBPP earned 500 total points
ID: 35199821
Here is an example of what you are trying to do:
http://www.sissongroup.com/Upload/Kidz-EEMC%20CMS800/Kidz-EEMC%20CMS800/COPYFILE.VBS


' CopyFile.vbs
' copy a file
' Can accept long filenames
' calling convention
'    copyfile.vbs "SourceFile" "TargetFile" Overwrite
' 
'  sourcefile is fully qualified (can be unc, can be relative path, can use wildecards) file to copy from
'  targetfile is fully qualified (can be unc, can be relative path, can use wildcards) file to copy to
'
' Returns status via Oi_ComDlg
'   0 on success
'   err.number:@fm:err.description on error 
'
' 03-06-2001  rjc     Created
' 08-27-2001  rjc     Configure for 3.75  Expects to be hosted in vb script control, called with RUN srcipt,main
'
function main(argstring)
	dim ofs ' as Scripting.FileSystemObject
	Dim oFile 'as Fileobject
	dim strSource ' as string
	Dim strTarget ' as string
	Dim strTargetFolder ' as string
	dim bOverWrite  ' as boolean
	dim strAns ' as string
	dim iArgCount
	dim params
	
	'On Error Resume Next	
	strAns = ""
	Err.Clear
	
	params = split(argstring,chr(253))
	iArgCount = Ubound(params)
	
		if iArgCount > 0 then
			strSource = params(0)   
		else
			strSource = ""
			Err.raise 50001,"Copyfile.vbs","Missing Source File"
		end if	
		
		if iArgCount > 1 then
			strTarget =  params(1)
		else
			strTarget = "" 
			Err.raise 50002,"Copyfile.vbs","Missing Target File"
		end if
		
		if iArgCount > 2 then
			bOverwrite = ( params(2) = "1" )
		else
		    bOverwrite = false
		end if
	
	set oFs = CreateObject("Scripting.FileSystemObject") 
	if Err.Number = 0 then
		if  oFs.FileExists(strSource) = false then
	  		Err.raise 50003,"Copyfile.vbs","Invalid Source File"
	  	end if	
	end if  
	
	' Simple check.  can be fooled
	if Err.Number = 0 then 
		'Target is a folder? make sure has trailing '\'	
		if ofs.FolderExists(strTarget) then
			if right(strTarget,1) <> "\" then
				strTarget = strTarget & "\"
			end if
		else
			if InStrRev(strTarget, "\") then
	    		strTargetFolder = Left(strTarget,InStrRev(strTarget, "\")-1)
	    		if ofs.FolderExists(strTargetFolder) = False then
	    			Err.raise 50004,"Copyfile.vbs","Invalid Target Folder"
	    		end if
	    	end if
	    end if	
	end if
	
	'Perform the copy. Use file object, allows copy to directory without specifying filename
	if Err.Number =  0 then
	   set oFile = ofs.GetFile(	strSource )
	   ofile.Copy strTarget, bOverwrite
	   set oFile = Nothing
	end if
	
	' Clean Up 
	set ofs = Nothing 
	
	if err.Number <>  0 then
		strAns = Err.Number & chr(254) & Err.Description	
	else
		strAns = 0   
	end if
	
	' Return value to hosting object	
	main =  strAns
	
		
end function

Open in new window

0
 
LVL 1

Author Comment

by:RichardRiga
ID: 35199830
Hyper, that first link i'd already looked at and tried to emulate but haven't gotten to work.
The second one only mentions that it is possible to use a relative path but shows no example for it specifically.  What am I doing wrong in MY example?
0
 
LVL 1

Author Comment

by:RichardRiga
ID: 35199834
lol ok i posted that last while you posted that second. i'll check it out now thanks
0
 
LVL 1

Author Closing Comment

by:RichardRiga
ID: 35200057
Thanks so much, that helped a ton.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Welcome back!  My apologies for taking so long to write part two of this series; it's been a long time coming!  As I promised in Part 1, this article will focus on how to locate those elusive AD properties that you are searching for.  Why is this us…
This script will sweep a range of IP addresses (class c only, 255.255.255.0) and report to a log the version of office installed. What it does: 1.)      Creates log file in the directory the script is run from (if it doesn't already exist) 2.)      Sweep…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

911 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

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now