Скрипт Powershell для удаления папок, начинающихся с '.'не работает - почему? - PullRequest
0 голосов
/ 13 декабря 2018

Я собрал простой скрипт powershell, предназначенный для удаления определенных папок:

gci -include .vs -recurse | remove-item -force -recurse

Однако папки .vs не удаляются (если удалить точку, папки с именем 'vs' получатснял просто отлично).Я, должно быть, что-то упускаю.

$PSVersionTable.PSVersion

Отчеты возвращаются:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  666

Я запускаю скрипт через проводник файлов, который называется «Правый клик -> Выполнить скрипт Powershell».Не знаю, заставляет ли это скрипт работать под последней и самой лучшей версией powershell или нет.

Обновление:

Оказывается, виновником является то, что папка .vs помечена как "только для чтения ".По какой-то причине сценарий powershell не может удалить его, даже если флаг '-force' действительно указан.С этим можно что-нибудь сделать?

1 Ответ

0 голосов
/ 13 декабря 2018

Вы упоминаете в комментарии, что для удаляемых каталогов имеют атрибуты Hidden и ReadOnly для файловой системы .

Пока -Force в вашем вызове Remove-Item - это , способный к принудительному удалению элементов с атрибутом ReadOnly, для вашего ввода Get-ChildItem также требуется -Force, в противном случае он не найдет скрытые файлы и папки , поэтому Remove-Item никогда их не видит:

# Note the -Force added to Get-ChildItem.
Get-ChildItem -Force -Include .vs -Recurse | Remove-Item -Force -Recurse -WhatIf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...