Solved

VBscript FSO.MoveFolder failing when not hard coded

Posted on 2006-10-24
4
1,023 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 143

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 143

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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

789 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