Удаление файлов с помощью планировщика задач с помощью ForFiles

Удаление файлов с помощью планировщика задач с помощью ForFiles

Я пытаюсь удалить все папки и файлы на ночной основе с помощью планировщика задач. Я использую следующую команду в действиях:

Программа/Скрипт: forfiles
Аргументы:/S /P C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup /C "cmd /c if @isdir==TRUE rd /s /q @file"

Это не удаление какого-либо файла или папки. Что я упустил в этом примере?

Кажется, это работает, но выдает ошибку: /S /P "C:\Users\Sales\AppData\Roaming\Apple Computer\MobileSync\Backup" /C "cmd /c rd /s /q @file

Ошибка:

C:\Users\david>forfiles /S /P "C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup"  /C "cmd /c rd /s /q @file

ERROR: The system cannot find the file specified.

C:\Users\david>

решение1

Зачем вы ищете в подкаталогах, если планируете затереть все с помощью «rd /s /q»?

Что тымощь(вероятно) видят это:

  1. forfilesсоздает список файлов для работы: скажем... "C:\Этот" и "C:\Это\То"
  2. Вы получаете "C:\Этот"вручил вам
  3. Вы удаляете "C:\Этот" рекурсивно
  4. Вы получаете "C:\Это\То" передано вам.
  5. При удалении возникает ошибка, так как он не существует.

Может произойти еще одно условие! Может быть открыт дескриптор файла при перечислении дерева, поэтому, когда вы пытаетесь удалить "C:\Этот", "C:\Это\То" все еще заблокирован открытым forfiles. Я не знаю, написан ли forfiles, чтобы обойти это, но у меня естьКонечностолкнулся с этим во время программирования.

Предложение: Исключите /S изforfiles(лучше всего) ИЛИ добавьте «бла-бла-бла..если существует @файл" бла-бла-бла (не самое лучшее).

Связанный контент