Solved

# Permission Denied Error on VB Script

Posted on 2009-05-06
486 Views
I receive a permission denied error on line 34, character 10 when I run this script against a folder location that has multiple nested folder levels and lots of files.  I am running the script against the root folder.  I have gone back through and reapplied permissions to every single file and folder for 'Everyone'.  I even made a copy of the entire folder structure, then manually deleted the files and folders using Windows explorer.  This confirmed that there was not a permission issue with accessing the files.  I am running the script locally on the actual computer the folder if located on.  I can run the script against a single folder within the root folder and it works okay.  I can also add each folder into the script text file and it will delete a few then stop with a permission issue.  I assume this has something to do with a filename length or folder name length.

Again, this is not an actual permission issue as I can manually delete all of the files and folders myself.  The script is run locally so it does not have permission issues.
Dim fso, startFolder, OlderThanDate

Dim strFilename, strPath

Set fso = CreateObject("Scripting.FileSystemObject")

strFilename = "c:\work\ee\urgent.txt"

set objFSO = CreateObject("Scripting.FileSystemObject")

if objFSO.FileExists(strFilename) Then

set objFile = objFSO.GetFile(strFilename)

Dim TextStream

Set TextStream = objFile.OpenAsTextStream(1,0)

Dim Line,i

Do While Not TextStream.AtEndOfStream

DeleteOldFiles strPath, OlderThanDate

RemoveEmptyFolders strPath

Loop

Set TextStream = nothing

Else

End If

Msgbox "Old Backup files have been deleted...Done !!"

Function DeleteOldFiles(folderName, BeforeDate)

Dim folder, file, fileCollection, folderCollection, subFolder

Set folder = fso.GetFolder(folderName)

Set fileCollection = folder.Files

For Each file In fileCollection

If file.DateLastModified < BeforeDate Then

fso.DeleteFile(file.Path)

End If

Next

Set folderCollection = folder.SubFolders

For Each subFolder In folderCollection

DeleteOldFiles subFolder.Path, BeforeDate

Next

End Function

'====================

Sub RemoveEmptyFolders(sFolderName)

Dim objFolder, objSubFolders, objFiles

Dim xFolder, xFile

Dim ret

'On Error Resume Next'

Set objFolder = fso.GetFolder(sFolderName)

Set objSubFolders = objFolder.SubFolders

Set objFiles = objFolder.Files

'count files'

iTotFiles=iTotFiles + objFiles.count

For Each xFile In objFiles

xFile.Attributes = xFile.Attributes And Not READONLY

Next

For Each xFolder In objSubFolders

xFolder.Attributes = xFolder.Attributes And Not READONLY

RemoveEmptyFolders (xFolder.Path)

Next

'count directories found'

itotdirs=itotdirs+1

' If the folder is empty then delete the folder.'

If objFiles.Count <= 0 and objSubFolders.count <= 0 Then

iDelDirs=iDelDirs+1

fso.DeleteFolder sFolderName, True

End If

End Sub

0
Question by:murryc
• 2
• 2

LVL 14

Accepted Solution

rejoinder earned 500 total points
ID: 24320774
Can you change line 34 to read;
fso.DeleteFile file.Path
or
fso.DeleteFile file.Path, True

See if either of those help.
0

Author Comment

ID: 24329963
fso.DeleteFile file.Path, True did the trick.

I have another small tweak.  Let me know if you want to me start a new question for it, since you already answered by first question.  This one might be super easy though.

The script deletes files older than a certain number of days.  I need to tweak it to delete files NEWER than 1-1-2009.
0

LVL 14

Assisted Solution

rejoinder earned 500 total points
ID: 24330020
No problem.

You will have to code the date into the variable OlderThanDate;
OlderThanDate = CDate("01/01/2009")
Change this line;
If file.DateLastModified < BeforeDate Then
to this...
If file.DateLastModified > BeforeDate Then

That should do it.
0

Author Comment

ID: 24330805
Worked Perfectly!
0

## Featured Post

In this article we want to have a look at the directory attributes which are used by Microsoft to store the so called Security Identifiers (SID). These SIDs plays an important role in delegating and granting permissions and in authentication of trus…
When it comes to writing scripts for a Client/Server computing environment it is essential to consider some way of enabling the authentication functionality within a script. This sort of consideration mainly comes into the picture when we are dealin…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.