
Я пытаюсь удалить все папки и файлы на ночной основе с помощью планировщика задач. Я использую следующую команду в действиях:
Программа/Скрипт: 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»?
Что тымощь(вероятно) видят это:
- forfilesсоздает список файлов для работы: скажем... "C:\Этот" и "C:\Это\То"
- Вы получаете "C:\Этот"вручил вам
- Вы удаляете "C:\Этот" рекурсивно
- Вы получаете "C:\Это\То" передано вам.
- При удалении возникает ошибка, так как он не существует.
Может произойти еще одно условие! Может быть открыт дескриптор файла при перечислении дерева, поэтому, когда вы пытаетесь удалить "C:\Этот", "C:\Это\То" все еще заблокирован открытым forfiles. Я не знаю, написан ли forfiles, чтобы обойти это, но у меня естьКонечностолкнулся с этим во время программирования.
Предложение: Исключите /S изforfiles(лучше всего) ИЛИ добавьте «бла-бла-бла..если существует @файл" бла-бла-бла (не самое лучшее).