Search code examples
windowsbatch-filecmd

Windows Script to move files older than 30 days with a specific extension to another folder


I am in need of a script preferably a vbscript for a Windows Server which will archive files in a folder to another folder. Say from \\folder1\ to \\folder1\archive\

The files have the extensions of .doc and .xls

But also I only want to move files older than 30 days.

Is there a simple way to do this?


Solution

  • Since you tagged your question with , I suppose you are accepting batch file solutions too.
    Here you are:

    pushd \\folder1
    forfiles /M *.doc /D -30 /C "cmd /C if @isdir==FALSE move @file .\archive\"
    forfiles /M *.xls /D -30 /C "cmd /C if @isdir==FALSE move @file .\archive\"
    popd
    

    Due to the syntax you used for the source directory path (\\folder1\) I suppose it is given by a UNC path. So I use the pushd command which understands such, maps it to a temporary drive it creates and changes the current working directory to the root of that drive.

    The forfiles command is capable of enumerating a given directory (tree) and iterates through all items that meet a certain mask and modification date (age). Since forfiles supports a single mask only, I simply use it twice.

    The popd command at the end removes that temporary drive which has been created by pushd.

    For more details about each used command, type it into the command prompt, followed by /?.