Solved

VBscript FSO.MoveFolder failing when not hard coded

Posted on 2006-10-24
4
1,017 Views
Last Modified: 2008-03-06
Hi There,

I'm trying to tidy up some folder names with a vbscript.

e.g. rename folder 'msgid_123456_Filename_date_version' to 'Filename date version'

I've done all the tidying and have two variables with the before and after folder names in.

If I run the code:

objFSO.MoveFolder "c:\msgid_123456_Filename_date_version" , "C:\Filename date version"

It works fine and renames the folder no problem.

If I try to use variables it seems to fail: I've tried several ways

==========================
strBefore = "'" & strBefore & "'"
strAfter = "'" & strAfter & "'"

objFSO.MoveFolder strBefore,strAfter
==========================

==========================
strBefore = chr(34) & strBefore & chr(34)
strAfter = chr(34) & strAfter & chr(34)

objFSO.MoveFolder strBefore,strAfter
==========================

As soon as I try to use variables with the movefolder command I get "Bad filename or number" error message on the movefolder line

Also if echo strBefore and strAfter on the screen they are exactly as I want them and definately point the correct folders with no spelling mistakes.

Does anyone have any ideas??



0
Comment
Question by:texaspete
  • 2
  • 2
4 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 17794461
you don't need the quotes in the filename variables.

strBefore = "c:\msgid_123456_Filename_date_version"
strAfter = "C:\Filename date version"

objFSO.MoveFolder strBefore,strAfter
0
 

Author Comment

by:texaspete
ID: 17794505
I'm not sure what you mean. in your reply you have quotes in

Besides, I'm not hard coding strBefore and strAfter. They are variables and are part of a loop so they will both be different each loop. If I leave the quotes out and one of the folder names has a space in it I get a "path not found" error on the MoveFolder line.
0
 
LVL 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 125 total points
ID: 17794958
yes, I have quotes for the string when assigning the string to the variable.
but those double quotes are only to delimit the string, which is a syntax issue, but is not part of the value.
so, when you call objFSO.MoveFolder (strBefore, strAfter), then you have 2 variables of type string, but not 2 strings constants...

the assignment was only an example of how the value could be given to the variable, let me guess that you read the folder names from some data source/file etc.

so, my suggestion stays:
do NOT add quotes to the string in the variable, and use the variables as like in this pseudo-code

'loop on some condition
while <somecondition>
  'assign the 2 variables from somewhere...
  strBefore = <some assignment>
  strAfter = <some assignment>

  'rnu the MoveFolder command
  objFSO.MoveFolder strBefore,strAfter

wend

0
 

Author Comment

by:texaspete
ID: 17892885
fixed it!

sorry for the delay i've been on leave. It was erroring at a different line. When the script loops and checks the subfolder the rename had already happened and the folder loop variable hadn't been updated with the new name of the renamed folder.

saying that I probably would have still been messing around with quotes by now so have the points

TP
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

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…
Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
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…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

862 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

25 Experts available now in Live!

Get 1:1 Help Now