Avatar of tgphelp
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

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

Open in new window

VB ScriptWindows 7

Avatar of undefined
Last Comment
Bill Prew

8/22/2022 - Mon
Lee W, MVP

Post a screen shot of the error you're having.
tgphelp

ASKER
Here you go
Capture.JPG
Lee W, MVP

Definitely need a screen shot of your error message - your script works fine on my Win8 x64 system.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
Lee W, MVP

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.
Bill Prew

What is the Windows system drive, C: or D:?

~bp
tgphelp

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
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
tgphelp

ASKER
I've tried this on my home computer with same results to make sure it wasn't a domain gpo stopping it
Qlemo

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.
tgphelp

ASKER
What would I add to the code to show that right now targeting each drive and get the number of files deleted
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
Bill Prew

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

Open in new window

~bp
tgphelp

ASKER
error got an error with your code
tgphelp

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
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
ASKER CERTIFIED SOLUTION
Bill Prew

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
tgphelp

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!
Bill Prew

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

Open in new window

~bp