Solved

# Permission Denied Error on VB Script

Posted on 2009-05-06
491 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
[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
• 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

Question has a verified solution.

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

Over the years I have built up my own little library of code snippets that I refer to when programming or writing a script.  Many of these have come from the web or adaptations from snippets I find on the Web.  Periodically I add to them when I come…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
###### Suggested Courses
Course of the Month5 days, 7 hours left to enroll