batch file needed to delete files

Hello!
 I would like to have a batch file that I can run as a scheduled task one a week.

I would like to search the c:/userfiles folder and its subfolders and delete .log, .dat and .zmtp files that are 31days or older.
bobby35nyAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ncronesCommented:
check out the MS Scripting Centre - great resource for all things scripting - has tools (eg scriptomatic) that can help you do what you are trying to get done - that is if they don't already have an eg up there for you to copy...

http://www.microsoft.com/technet/scriptcenter

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
NivleshCommented:
Hi there.

There is a beautiful command forfiles.exe that is part of the windows 2000 resource kit and comes standard in windows 2003 server. To address your problem, run the following script with forfiles

rem set variables etc
SET _forfiles="{path to forfiles .. for eg c:\windows\system32\forfiles.exe}"
SET _start_dir=c:\userfiles
SET _age=31

rem start the command

%_forfiles% /p %_start_dir% /m *.log /d -%_age% /c "cmd /c delete @path"
%_forfiles% /p %_start_dir% /m *.dat /d -%_age% /c "cmd /c delete @path"
%_forfiles% /p %_start_dir% /m *.zmtp /d -%_age% /c "cmd /c delete @path"

rem end of script


I suggest running the following to ensure you are capturing the right files before deleting

%_forfiles% /p %_start_dir% /m *.log /d -%_age% /c "cmd /c echo @path was modified on @fdate"
%_forfiles% /p %_start_dir% /m *.dat /d -%_age% /c "cmd /c echo @path was modified on @fdate"
%_forfiles% /p %_start_dir% /m *.zmtp /d -%_age% /c "cmd /c echo @path was modified on @fdate"

Once you sure, run the script. If you cannot get the forfiles.exe then let me know and I will email it to you. Also, if you want forfiles to recurse subdirectories from c:\userfiles then use the /s switch.

Full command syntax of forfiles is

FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {dd-MM-yyyy | dd}]

Description:
    Selects a file (or set of files) and executes a
    command on that file. This is helpful for batch jobs.

Parameter List:
    /P    pathname      Indicates the path to start searching.
                        The default folder is the current working
                        directory (.).

    /M    searchmask    Searches files according to a searchmask.
                        The default searchmask is '*' .

    /S                  Instructs forfiles to recurse into
                        subdirectories. Like "DIR /S".

    /C    command       Indicates the command to execute for each file.
                        Command strings should be wrapped in double
                        quotes.

                        The default command is "cmd /c echo @file".

                        The following variables can be used in the
                        command string:
                        @file    - returns the name of the file.
                        @fname   - returns the file name without
                                   extension.
                        @ext     - returns only the extension of the
                                   file.
                        @path    - returns the full path of the file.
                        @relpath - returns the relative path of the
                                   file.
                        @isdir   - returns "TRUE" if a file type is
                                   a directory, and "FALSE" for files.
                        @fsize   - returns the size of the file in
                                   bytes.
                        @fdate   - returns the last modified date of the
                                   file.
                        @ftime   - returns the last modified time of the
                                   file.

                        To include special characters in the command
                        line, use the hexadecimal code for the character
                        in 0xHH format (ex. 0x09 for tab). Internal
                        CMD.exe commands should be preceded with
                        "cmd /c".

    /D    date          Selects files with a last modified date greater
                        than or equal to (+), or less than or equal to
                        (-), the specified date using the
                        "dd-MM-yyyy" format; or selects files with a
                        last modified date greater than or equal to (+)
                        the current date plus "dd" days, or less than or
                        equal to (-) the current date minus "dd" days. A
                        valid "dd" number of days can be any number in
                        the range of 0 - 32768.
                        "+" is taken as default sign if not specified.

    /?                  Displays this help message.

Examples:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 was changed 30 days ago"
    FORFILES /D 01-01-2001
             /C "cmd /c echo @fname is new since Jan 1st 2001"
    FORFILES /D +8-7-2008 /C "cmd /c echo @fname is new today"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"


All the best. Let me know how you go


0
NivleshCommented:
my apologies .. in the command line use del instead of delete

%_forfiles% /p %_start_dir% /m *.log /d -%_age% /c "cmd /c del @path"
%_forfiles% /p %_start_dir% /m *.dat /d -%_age% /c "cmd /c del @path"
%_forfiles% /p %_start_dir% /m *.zmtp /d -%_age% /c "cmd /c del @path"
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Windows Server 2003

From novice to tech pro — start learning today.