Solved

VBscript FSO.MoveFolder failing when not hard coded

Posted on 2006-10-24
4
1,029 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
[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
  • 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
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 …
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…
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…

751 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