NateAtWork
New Member
- Joined
- Nov 11, 2014
- Messages
- 6
Hi all,
I am new to vbscript, but I have some experience with vba. I am trying to move, rename, and delete files based on their names and where they are stored in the folder structure. But when I run the script I get an error "Invalid 'for' loop control variable" that takes place at the start of the second for loop. I don't see the difference between the way the variables are set up for the first and second for loop so this doesn't make sense to me. If anyone could take a look and figure out what I am doing wrong I would appreciate it:
I am new to vbscript, but I have some experience with vba. I am trying to move, rename, and delete files based on their names and where they are stored in the folder structure. But when I run the script I get an error "Invalid 'for' loop control variable" that takes place at the start of the second for loop. I don't see the difference between the way the variables are set up for the first and second for loop so this doesn't make sense to me. If anyone could take a look and figure out what I am doing wrong I would appreciate it:
Rich (BB code):
'Should fix folder structure for Dim fso, Folder, file, MasterFolder, FolderInFolder, Temp
Dim MasterFolderName, SubFolderName, searchFileName, renameFileTo, _
SubmittalNumber, Submittals_wo_Approved_Folder, _
Submittals_wo_Approved_Folder_prev
' Parameters
MasterFolderName = """C:\desktop\Submittals\"""
SubFolderName = """\Approved\"""
searchFileName = """Procore Print"""
' Create filesystem object and the folder object
' how the FSO works: http://msdn.microsoft.com/en-us/library/2z9ffy99(v=vs.84).aspx
Set fso = CreateObject("Scripting.FileSystemObject")
Set MasterFolder = fso.GetFolder(MasterFolderName)
Set Temp = fso.CreateFolder("C:\desktop\Submittals\temp")
' Loop over all files in the folder until the searchFileName is found
For each Folder In MasterFolder.SubFolders
Set Folder = fso.GetFolder(Folder.name)
' See if the file starts with the name we search
' how instr works: http://www.w3schools.com/vbscript/func_instr.asp
renameFileTo = left(Folder.Name,instr(file.name, "-") - 2) _
& " " & searchFileName
For each FolderInFolder in folder.SubFolders
Submittals_wo_Approved_Folder_prev = _
Submittals_wo_Approved_Folder
Submittals_wo_Approved_Folder = _
Submittals_wo_Approved_Folder _
& ", " & folder.name
if FolderInFolder.Name = SubFolderName then
Submittals_wo_Approved_Folder = _
Submittals_wo_Approved_Folder_prev
exit for
For each FolderInFolder in folder.SubFolders '<----ERROR OCCURS AT RED CHARACTOR
if FolderInFolder.Name = SubFolderName then
For Each file in FolderInFolder
If instr(file.name, searchFileName) = 1 Then
file.name = renameFileTo
REM REM ' Exit the loop, we only want to rename one file
REM REM Exit For
End If
fso.copyFile file.path, temp
Next File
FolderInFolder.DeleteFolder FolderInFolder.Path, True
else
FolderInFolder.DeleteFolder FolderInFolder.Path, True
Next FolderInFolder
For each file in Folder.subfolders
file.DeleteFile File.Path, True
Next file
end if
Next FolderInFolder
For each file in temp.files
fso.copyFile file.path, folder.path
next file
Next
writeline.print Submittals_wo_Approved_Folder
fso.deleteFolder temp.path, True