3

Я ищу, чтобы автоматически удалять файлы старше 7 дней с forfiles .

Приведенный ниже код работает, когда я делаю это вручную и отвечаю «да» на удаление файлов. Как я могу включить да в это?

Это вывод:

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)?

3 ответа3

4

Вы можете попробовать добавить в /Q /S, хотя имейте в виду, что на самом деле это может не соответствовать тому, что вы действительно хотите:

/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"

Возможно, вам лучше использовать CSCRIPT (с вашим выбором VBScript или JScript) или PowerShell. Проверьте этот ответ от StackOverflow: https://stackoverflow.com/questions/1575493/how-to-delete-empty-subfolders-with-powershell

Вот некоторый VBScript для выполнения аналогичной задачи:

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
0

В этом примере удаляются все файлы в папке «G:\db_bk_copies» старше 3 дней, не запрашивая у пользователей подтверждения удаления (Вы уверены (да / нет)?):

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

-1

Убедитесь, что файлы не являются скрытыми или системными файлами.

Если система попробует:

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

Если скрыто, попробуйте:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .