Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: Needing a batch file to delete all files in a folder older than 5 days old  (Read 42192 times)

0 Members and 1 Guest are viewing this topic.

Sidewinder



    Guru

    Thanked: 139
  • Experience: Familiar
  • OS: Windows 10
Quote
but i get an error when i try to delete files

What error might that be? We're not psychic (at least not all of us)

You can try the delete method without the parens: fso.Deletefile objFile OR fso.Deletefile objFile, True

The true option will force read-only files to be deleted.

Quote
ps. the recycle bin is for Pussies

Can I quote you the next time some poster appears on the CH doorstep looking for their lost files? ;D
The true sign of intelligence is not knowledge but imagination.

-- Albert Einstein

DJFLuFFY



    Rookie

    The error is posted as a print screen

    I have another one in this message

    Quote
    but i get an error when i try to delete files

    What error might that be? We're not psychic (at least not all of us)

    You can try the delete method without the parens: fso.Deletefile objFile OR fso.Deletefile objFile, True

    The true option will force read-only files to be deleted.

    Quote
    ps. the recycle bin is for Pussies

    Can I quote you the next time some poster appears on the CH doorstep looking for their lost files? ;D Always  8)  ;D



    [recovering disk space -- attachment deleted by admin]

    !~*:.Pink Floyd.:*~!

    • Guest
    ps. the recycle bin is for Pussies  :P

    I hate how there isnt a option to just delete the everything in recyle bin every few days.
    Or turn it off.

    Sidewinder



      Guru

      Thanked: 139
    • Experience: Familiar
    • OS: Windows 10
    I can't duplicate your error, but I did find an oversight bug that bypasses the files in the top level directory.

    Code: [Select]
    Set fso = CreateObject("Scripting.FileSystemObject")
    fs = "c:\temp\temp"                 'point to your directory
    ShowFiles(fs)

    Sub ShowFiles(Fld)
    Set k = fso.GetFolder(Fld)
    Set s = k.SubFolders
    Set kf = k.Files

    For Each objFile In kf
    If fso.GetExtensionName(objFile) = "avi" then
    If objFile.DateCreated < date - 5 Then
    WScript.Echo objFile & " " & objFile.DateCreated
    fso.DeleteFile objfile
    End If
    End if
    Next

    For Each SubFolder In s
    ShowFiles SubFolder
    Next
    End Sub

    Quote
    and now i can only select 1 extension by default it's avi. *.* works fine for me Wink < Yes i fixed this

    It might be better if you post the code your actually using. The delete method is correct as written.

    I hate how there isnt a option to just delete the everything in recyle bin every few days.
    Or turn it off.

    This can be easily accomplished by writing a script to run from the scheduler or the startup  folder.

     8)

    Quote
    i am a PHP coder so i know the basics for programming

    I was under the impression that the newer versions of PHP have a command line interface.
    The true sign of intelligence is not knowledge but imagination.

    -- Albert Einstein

    DJFLuFFY



      Rookie

      I just remove the IF statement where the script gets his extension.

      like this
      Code: [Select]
      Set fso = CreateObject("Scripting.FileSystemObject")
      fs = "c:\temp\temp"                 'point to your directory
      ShowFiles(fs)

      Sub ShowFiles(Fld)
      Set k = fso.GetFolder(Fld)
      Set s = k.SubFolders
      Set kf = k.Files

      For Each objFile In kf
      If objFile.DateCreated < date - 5 Then
      WScript.Echo objFile & " " & objFile.DateCreated
      fso.DeleteFile objfile
      End If
      Next

      For Each SubFolder In s
      ShowFiles SubFolder
      Next
      End Sub


      and the server where i run this script is a file server and there is no webserver installed, and that's why PHP doesn't work.

      Sidewinder



        Guru

        Thanked: 139
      • Experience: Familiar
      • OS: Windows 10
      So do you still have a problem? I ran the code you posted on a test bed of files and had no problems.

      Do you have permissions for the top and sub level directories? You can try adding the True option to the delete method (see earlier post), but I'm pretty sure that's for read-only files and will not override permissions.

      This appears to be a local issue rather than a syntax problem with the script. Perhaps you could run the script as an administrator.

       8)
      The true sign of intelligence is not knowledge but imagination.

      -- Albert Einstein

      DJFLuFFY



        Rookie

        i didn't tried this code,

        i shall do that First thing tomorrow.

        many thanks and i will let you know what this script does :)

        DJFLuFFY



          Rookie

          I tried it, but i get the same error :S

          WEW

            Topic Starter


            Rookie

            Thank you Sidewinder, I must be missing something,,, totally new to these vbs files. I copied and pasted your code into a notepad and saved it as avi.vbs on my C:\. Here is how i edited my path in.

            Set fso = CreateObject("Scripting.FileSystemObject")
            fs = "c:\dvr_data"                 
            ShowFiles(fs)

            Sub ShowFiles(Fld)
               Set k = fso.GetFolder(Fld)
               Set s = k.SubFolders
               Set kf = k.Files
               
               For Each objFile In kf
                  If fso.GetExtensionName(objFile) = "avi" then
                     If objFile.DateCreated < date - 3 Then
                        WScript.Echo objFile & " " & objFile.DateCreated
                        fso.DeleteFile objfile
                     End If
                  End if
               Next
               
               For Each SubFolder In s
                  ShowFiles SubFolder
               Next
            End Sub

            I used this code because I too will have subfolders.The path to my files are  C:\DVR_DATA\VIDEO in this folder i have cam 1, cam2, cam3, cam4.


            I opened a cmd prompt and typed   cscript avi.vbs and got the attached results.
            Thank you for your time... Sorry i don't understand these vbs files at all. No experience.   THANKS AGAIN FOR YOUR TIME AND PATIENTS 


            [recovering disk space -- attachment deleted by admin]

            Sidewinder



              Guru

              Thanked: 139
            • Experience: Familiar
            • OS: Windows 10
            The code seems to be correct. You can debug this:

            Code: [Select]
            Set fso = CreateObject("Scripting.FileSystemObject")
            fs = "c:\dvr_data"                 
            ShowFiles(fs)

            Sub ShowFiles(Fld)
               Set k = fso.GetFolder(Fld)
               Set s = k.SubFolders
               Set kf = k.Files
               
               For Each objFile In kf
                  'If fso.GetExtensionName(objFile) = "avi" then
                     'If objFile.DateCreated < date - 3 Then
                        WScript.Echo objFile & " " & objFile.DateCreated
                        'fso.DeleteFile objfile
                     'End If
                  'End if
               Next
               
               For Each SubFolder In s
                  ShowFiles SubFolder
               Next
            End Sub

            The posted code will unconditionally list the files. No checking extension or age. If no listing, there are probably no files in any of the directories. If there is a listing you can check for extension:

            Code: [Select]
            Set fso = CreateObject("Scripting.FileSystemObject")
            fs = "c:\dvr_data"                 
            ShowFiles(fs)

            Sub ShowFiles(Fld)
               Set k = fso.GetFolder(Fld)
               Set s = k.SubFolders
               Set kf = k.Files
               
               For Each objFile In kf
                  If fso.GetExtensionName(objFile) = "avi" then
                     'If objFile.DateCreated < date - 3 Then
                        WScript.Echo objFile & " " & objFile.DateCreated
                        'fso.DeleteFile objfile
                     'End If
                  End if
               Next
               
               For Each SubFolder In s
                  ShowFiles SubFolder
               Next
            End Sub

            If no listing, none of the files have avi extensions. If there is a listing you can check the age:

            Code: [Select]
            Set fso = CreateObject("Scripting.FileSystemObject")
            fs = "c:\dvr_data"                 
            ShowFiles(fs)

            Sub ShowFiles(Fld)
               Set k = fso.GetFolder(Fld)
               Set s = k.SubFolders
               Set kf = k.Files
               
               For Each objFile In kf
                  If fso.GetExtensionName(objFile) = "avi" then
                     If objFile.DateCreated < date - 3 Then
                        WScript.Echo objFile & " " & objFile.DateCreated
                        'fso.DeleteFile objfile
                     End If
                  End if
               Next
               
               For Each SubFolder In s
                  ShowFiles SubFolder
               Next
            End Sub

            If no listing, the files do not meet the age requirement. Debugging can be a chore especially with recursion where a subroutine continuously calls itself with changing values, but it will give you some insight how the script works. Do not uncomment the deletefile function until the listings are correct.

            Good luck.  8)

            The true sign of intelligence is not knowledge but imagination.

            -- Albert Einstein

            WEW

              Topic Starter


              Rookie

               ;D  Hey Sidewinder It Works,,,, Thank you!!! Don't know how you Came up with that code... Got to say your the Man....I was messing it up because i copied the files to another folder as a precaution.Your tip to check the dates got me to poking around a little deeper..I found the Modified date was same as the created date in the original folder but i wasn't showing the creation date... when i looked at the creation date in the copied folder it showed all were created today.... So Sorry to have u write the last 2 codes... and thanks for taking the time and patients to lead me through this... Wife Hollering at me to go to town so i'll try the delete thing when i get home...Your help is greatly appreciated... I'll let u know how i come out...

              WEW

                Topic Starter


                Rookie

                Hey Sidewinder,,, It worked like a top... thank you for your experties...Did you go to College to learn how to do this?

                chachi



                  Greenhorn

                  Re: Needing a batch file to delete all files in a folder older than 5 days old
                  « Reply #27 on: December 12, 2008, 02:46:50 PM »
                  This script worked great even using a UNC path, I was just wondering if anyone could tell me how to set it to check multiple locations?  Like maybe point to a file with a list of locations vs. just the one location at the top?

                  Code: [Select]
                  fs = "c:\dvr_data"

                  Sidewinder



                    Guru

                    Thanked: 139
                  • Experience: Familiar
                  • OS: Windows 10
                  Re: Needing a batch file to delete all files in a folder older than 5 days old
                  « Reply #28 on: December 12, 2008, 04:14:09 PM »
                  This script worked great even using a UNC path, I was just wondering if anyone could tell me how to set it to check multiple locations?  Like maybe point to a file with a list of locations vs. just the one location at the top?

                  Code: [Select]
                  fs = "c:\dvr_data"

                  Please start a new thread. Hijacking a 4 month old post is a near guarantee to have your post lost in the shuffle. A post with zero replies is much more likely to gather interest than one with 26 replies. I just happened by today, next time you might not get the service you deserve.

                   8)

                  PS. Yes, it is possible to setup a file of locations, create a dynamic array from that file or even hardcode an array of locations in the script.
                  The true sign of intelligence is not knowledge but imagination.

                  -- Albert Einstein

                  chachi



                    Greenhorn