8

I'm looking to automatically delete files older than 7 days old with forfiles.

The code below works when I do it manually and respond yes to deleting the files. How can I incorporate the yes into this?

This is the output:

E:\>forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del @path"
Could Not Find H:\SHARED\Scans\.DS_Store
H:\SHARED\Scans\XXX\DOC006.XSM\*, Are you sure (Y/N)?
2
  • 1
    what happens when you try echo y | before it?
    – barlop
    Commented Jan 5, 2011 at 16:30
  • Note that contrary to what MS docs say, /m *.* in forfiles does not match all files. It will only match files whose names have an extension. If you want to match all files, you need /m *. Or just omit /m entirely, since /m * is the default. Commented Jan 16, 2018 at 2:13

3 Answers 3

10

You could try adding in a /Q /S, though be aware that this may not in fact do what you really want it to:

/Q Quiet mode, do not ask if ok to delete on global wildcard
/S Delete specified files from all subdirectories

E:\forfiles -p "H:\SHARED\Scans" -s -m . -d -7 -c "cmd /c del /Q /S @path"

You are probably better off either using CSCRIPT (with your choice of VBScript or JScript) or PowerShell. Check out this answer from StackOverflow: https://stackoverflow.com/questions/1575493/how-to-delete-empty-subfolders-with-powershell

Here is some vbscript to accomplish a similar task:

Dim fso, folder, folders
Set fso = CreateObject("Scripting.FileSystemObject")
Set parent = fso.GetFolder("H:\SHARED\Scans")
Set folders = parent.SubFolders

' delete any folder older than 7 days
For Each folder in folders
    If Abs(DateDiff("d",Date, folder.DateCreated)) > 7 Then
        folder.Delete(True) 'force delete
    End If
Next
1
  • Might want to try H:\SHARED\Scans\ seems the .DS_STORE is getting appended to the current folder @PHLiGHT
    – Sathyajith Bhat
    Commented Jan 5, 2011 at 17:33
0

This example removes all files in the folder "G:\db_bk_copies" older than 3 days without asking the users to confirm deletion (Are you sure (Y/N)?):

forfiles -p "G:\db_bk_copies" -s -m * /D -3 /C "cmd /c del /a-s @path"

-1

Verify that the files are not Hidden or system files.

If System try:

forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-s @path"

If Hidden Try:

forfiles -p "H:\SHARED\Scans" -s -m *.* -d -7 -c "cmd /c del /a-h @path"
1
  • Please read the question again carefully. Your answer does not answer the original question.
    – DavidPostill
    Commented Jul 13, 2016 at 19:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .