PDA

Показать полную графическую версию : Удаление временных файлов: ~$*.xls ...


JimmLight
11-08-2020, 11:12
Есть Share: "\\srv\Documents\" с кучей подкаталогов, необходимо удалить все файлы из всех подкаталогов. Формат файлов таков: ~$*.xls;~$*.xlsx;~$*.doc;~$*.docx;~$*.pptx;~$*.ppt.

Каким образом это можно сделать средствами PowerShell?

greg zakharov
11-08-2020, 14:50
Пардон, а разве это не свопы открытых документов? Свопы обычно лочатся и при попытке удалить их получается фига. Бывает, правда, что Word или Excel забывают подчистить за собой, тогда ничего не остается как удалять их вручную или скопом. Например:
(Get-ChildItem X:\Path -Recurse -File -Force).Where{$_.Name -match '\.(doc|xls|ppt)(?:x)?$'}.ForEach{Remove-Item $_.FullName -Force}
Подбить пример под свои нужды, очевидно, сможете самостоятельно.

JimmLight
12-08-2020, 06:48
Пардон, а разве это не свопы открытых документов? Свопы обычно лочатся и при попытке удалить их получается фига. Бывает, правда, что Word или Excel забывают подчистить за собой, тогда ничего не остается как удалять их вручную или скопом.»
Это свопы закрытых документов (при некорректном завершении работы с файлом, свопы не удаляются).
Подбить пример под свои нужды, очевидно, сможете самостоятельно. »
Подбить пример - указать свой путь? Попробовал, скрипт удаляет почти всё на своем пути.

Elven
12-08-2020, 10:51
при некорректном завершении работы с файлом »
С нынешними версиями офиса для того чтобы своп не самоубился при закрытии файла всякий там ворд/эксель/поверпойинт нужно убивать совсем уж жестоко. Есть еще один вариант "неудаления" подобных файлов - кривые NTFS разрешения на папке. Если дело в этом (а сохранность файлов на шаре в документах которые нужно редактировать но нельзя удалять часто подкостыливается через снятие разрешения на удаление), то я бы рекомендовал таки пересмотреть разрешения. Например с правом на удаления для овнера и с созданием/дозаписью для всех кто имеет доступ к шаре.

greg zakharov
12-08-2020, 12:33
Подбить пример - указать свой путь? Попробовал, скрипт удаляет почти всё на своем пути.В вашем случае "подбить" - не копипастить, изменив путь (хотя оный также потребуется поправить), а дополнить шаблон совпадений. Слово "пример" было употреблено неслучайно.

JimmLight
12-08-2020, 12:35
Сделал следующим образом:

Get-ChildItem -Path "X:\Test" -Include "~$*.doc","~$*.docx","~$*.xlsx","~$*.xls","~$*.ppt","~$*.pptx" -Force -Recurse | Remove-Item -Force -Recurse

greg zakharov
12-08-2020, 12:40
И получили crapcode. Удачи!.




© OSzone.net 2001-2012