Я использую следующую команду для удаления файлов старше X дней (%numb% - количество дней):
forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"
Тем не менее, когда я его выполняю, он просто подсказывает мне все функции форфайлов и то, как их следует использовать.
Ответ 1 · рейтинг 4 · RobW
Вы можете изменить свой "DEL @path" на "echo @path", пока не исправите ошибки...
На моей машине с XPsp3 я заметил, что дефис перед числом дней (%numb%) важен. Итак, это:
forfiles -p "%temp%" -s -m *.* -d 30 -c "cmd /c echo @path"
дал следующее: ОШИБКА: Не найдены файлы с указанными критериями поиска.
но это:
forfiles -p "%temp%" -s -m *.* -d -30 -c "cmd /c echo @path"
дал мне список каталогов
Ответ 2 · рейтинг 1 · lavinio
Одно предположение, поскольку вы не предоставили много информации, заключается в том, что если вы не используете 2003/Vista, у вас не должно быть пробела после каждого параметра:
forfiles -p"%temp%" -s -m*.* -d%numb% -c"cmd /c del @path"
Также возможно, что ваши параметры замены не работают должным образом. Мне часто бывает полезно ставить перед командой префикс "echo", чтобы увидеть, что на самом деле обрабатывается:
echo forfiles -p "%temp%" -s -m *.* -d %numb% -c "cmd /c del @path"
Ответ 3 · ghostdog74
Изначально вы можете использовать vbscript. в этом примере количество дней равно 30
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "c:\test"
numdays=30
today=Now
Set objFolder = objFS.GetFolder(strFolder)
Go (objFolder)
Sub Go(objDIR)
If objDIR <> "\System Volume Information" Then
For Each eFolder in objDIR.SubFolders
Go eFolder
Next
For Each strFile In objDIR.Files
If DateDiff("d",strFile.DateLastModified,today) >= numdays Then
WScript.Echo "file found that is 1 month old or more: " & strFile
'objFSO.DeleteFile(strFile) 'uncomment to use
End If
Next
End If
End Sub