Powershell удаляет файлы только из каталога

14

Я пытаюсь удалить все файлы (но не каталоги) в папке D: \ MyTemp, я пробовал:

Remove-Item "D:\MyTemp"
Remove-Item "D:\MyTemp\*"

Однако, когда я проверяю, все файлы все еще там.
Что мне не хватает?

STEB
источник

Ответы:

18

Попробуй это:

Get-ChildItem *.* -recurse | Where { ! $_.PSIsContainer }

Нашел его здесь: /superuser/150748/have-powershell-get-childitem-return-files-only

Чтобы удалить все файлы только в указанном каталоге (игнорируя подкаталоги):

Remove-Item "D:\MyTemp\*.*" | Where { ! $_.PSIsContainer }
Борн
источник
1
Это только список файлов в текущем каталоге
SteB
Боже мой, я не был уверен, хочешь ли ты сделать рекурс. Я отредактирую оригинал. Вы можете просто добавить -recurse к команде Get-ChildItem
bourne
Это работает (удаляет только файлы из указанного каталога, игнорируя подкаталоги): Remove-Item "D: \ MyTemp \ *. *" | Где { ! $ _. PSIsContainer}
SteB
Замечательно. Рад, что ты получил это работает.
Борн
Извините, кстати, SteB, я только что заметил, что забыл включить Remove-Item. Это будет долгий день вау!
Борн
12

Принятый ответ не работал для меня, вместо этого мне нужно было:

Get-Childitem -File | Foreach-Object {Remove-Item $_.FullName}

Чтобы включить папки и файлы, добавьте -Recurse:

Get-Childitem -File -Recurse | Foreach-Object {Remove-Item $_.FullName}
79E09796
источник
1
Это также удаляет файлы из подкаталогов - возможно, не то, что предполагал ОП ...
Робби Ди
1
Этот ответ должен быть принят один. Я выбираю тебя!
Теоман Шипахи
4

Вы были почти там, вам просто нужно:

Remove-Item "D:\MyTemp\*.*"
Робби Ди
источник
0

У @bourne почти было это:

Get-ChildItem *.* -recurse | Where { ! $_.PSIsContainer } | remove-item
Мордехай
источник
3
Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют уточнения от автора . - Из Обзора
rnxrx
Что вы имеете в виду, что это не дает ответа? Что оно делает? Это единственный полный ответ на странице.
Мордехай
Это не самодостаточный ответ. Кстати, в вашем ответе это исправление к другому ответу, и его следует включить в качестве комментария.
rnxrx
извините, я думаю, вы не понимаете PowerShell. Просто потому, что я ссылаюсь на другой ответ, он не делает мой менее «самодостаточным»,
Мордехай
Вы можете объяснить проблему другим ответом, сделав его командой. В противном случае вы можете объяснить, что делает ваша команда Powershell
Деннис Нольте,