Автоматически отвечает да на файлы


4

Я ищу, чтобы автоматически удалять файлы старше 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)?

1
что происходит, когда вы пытаетесь эхо у | перед этим?
Бароп

Следует отметить , что вопреки тому , что говорят MS документы, /m *.*в forfilesне соответствует все файлы. Он будет соответствовать только файлам, имена которых имеют расширение. Если вы хотите сопоставить все файлы, вам нужно /m *. Или просто опустить /mполностью, так /m *как по умолчанию.
августа

Ответы:


5

Вы можете попробовать добавить в / 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

Возможно, вам захочется попробовать, H:\SHARED\Scans\ кажется, что .DS_STOREон добавляется в текущую папку @PHLiGHT
Сатьяджит Бхат

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"

Пожалуйста, внимательно прочитайте вопрос. Ваш ответ не отвечает на оригинальный вопрос.
DavidPostill
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.