tgphelp
asked on
VBS script not working on windows 7 64 bit
Hi all I have a script that worked great to clear out a file with XP and windows xp
and works great on servers when run for a 2003 server
Im trying to modify it to work on windows 7 64bit as we have an autocad virus multiplying and I need to crush it on end users machines, now i just dabble in code and grab some from sites but this has been great in the past see code below however when I run it one windows 7 64 bit it errors out and says like 10 character 3
Permission denied
Any help would be great so I dont have to manually search each machine in our office
and works great on servers when run for a 2003 server
Im trying to modify it to work on windows 7 64bit as we have an autocad virus multiplying and I need to crush it on end users machines, now i just dabble in code and grab some from sites but this has been great in the past see code below however when I run it one windows 7 64 bit it errors out and says like 10 character 3
Permission denied
Any help would be great so I dont have to manually search each machine in our office
START_FOLDER = "D:\"
PREFIX = "acad.lsp"
Set oFSO = CreateObject("Scripting.FileSystemObject")
ProcessSubFolders oFSO.GetFolder(START_FOLDER), iCount
Sub ProcessSubFolders(oFolder, iCount)
Set cFiles = oFolder.Files
For Each oFile In cFiles
If Left(oFile.Name, Len(PREFIX)) = PREFIX Then
oFile.Delete
iCount = iCount + 1
End If
Next
For Each oSubFolder In oFolder.SubFolders
ProcessSubFolders oSubFolder, iCount
Next
End Sub
WScript.Echo "Files deleted: " & iCount
Post a screen shot of the error you're having.
ASKER
Here you go
Capture.JPG
Capture.JPG
Definitely need a screen shot of your error message - your script works fine on my Win8 x64 system.
Are you running as an administrator? Try that. Your issue appears to be NTFS permissions based, not script based. The user running this does not have appropriate access to the path you are looking at.
What is the Windows system drive, C: or D:?
~bp
~bp
ASKER
System drive is c I've tried both and running as the domain admin on the computer as well as the local admin
Have tried launching from elevated cmd but same issue
Have tried launching from elevated cmd but same issue
ASKER
I've tried this on my home computer with same results to make sure it wasn't a domain gpo stopping it
Locate the path the message is caused by, e.g. by printing out each path processed.
You can also ignore the error with on error resume next, but that should be the means of last resort only.
My take is that you have virtual folders on D:. Those came starting with Vista/2008 to stay "compatible" with prior releases, as predefined paths changed a lot then. Example is Documents and Settings, which is Users now.
You can also ignore the error with on error resume next, but that should be the means of last resort only.
My take is that you have virtual folders on D:. Those came starting with Vista/2008 to stay "compatible" with prior releases, as predefined paths changed a lot then. Example is Documents and Settings, which is Users now.
ASKER
What would I add to the code to show that right now targeting each drive and get the number of files deleted
Give this a try, it will skip folders it can't access.
START_FOLDER = "D:\"
PREFIX = "acad.lsp"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
ProcessSubFolders objFSO.GetFolder(START_FOLDER, intCount)
Sub ProcessSubFolders(objFolder, intCount)
On Error Resume Next
For Each objFile In objFolder.Files
If Left(objFile.Name, Len(PREFIX)) = PREFIX Then
Wscript.Echo "Deleted file: " & objFile.Path
objFile.Delete
intCount = intCount + 1
End If
Next
If Err.Number = 0 Then
For Each objSubFolder In objFolder.Subfolders
ProcessSubFolders objSubFolder, intCount
Next
Else
Wscript.Echo "Skipped folder: " & objFolder.Path
End If
End Sub
WScript.Echo "Files deleted: " & intCount
~bp
ASKER
now if i just add on error resume next, in my sub procedure in my code it works but i don't see where it error-ed
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Bill thanks so much for the help its working it seems but there is one thing that is off it seems to count the skipped files/folders in the count so say it skipped 7 folders and there were no files to delete it says deleted 7 files
any quick adjustment so that doesnt count skips as deletes? thats so much for the help!
any quick adjustment so that doesnt count skips as deletes? thats so much for the help!
Not positive is this will work, but give it a try...
START_FOLDER = "D:\"
PREFIX = "acad.lsp"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
ProcessSubFolders objFSO.GetFolder(START_FOLDER), intCount
Sub ProcessSubFolders(objFolder, intCount)
On Error Resume Next
For Each objFile In objFolder.Files
If Left(objFile.Name, Len(PREFIX)) = PREFIX Then
objFile.Delete
If Err.Number = 0 Then
Wscript.Echo "Deleted file: " & objFile.Path
intCount = intCount + 1
End if
End If
Next
If Err.Number = 0 Then
For Each objSubFolder In objFolder.Subfolders
ProcessSubFolders objSubFolder, intCount
Next
Else
Wscript.Echo "Skipped folder: " & objFolder.Path
End If
End Sub
WScript.Echo "Files deleted: " & intCount
~bp