В этом сообщении объясняется, как удалить файлы с помощью команды Powershell ‘Remove-Item’.
Удалить файл из PowerShell
Мы можем удалить файл с помощью команды remove -item, как показано ниже. Откройте приглашение powershell и выполните команду.
remove-item file-path
Пример:
PS C: > Remove-Item C: test testFile.txtPS C: >
Удалить несколько файлов
Мы можем удалить столько файлов, сколько мы хотим с помощью одной команды remove-item. Нам просто нужно добавить имена файлов через запятую. См. Пример ниже.
PS C: > Remove-Item C: dir1 file1, C: dir1 file2, C: dir2 file3PS C: >
Удалить файлы с подстановочными символами
Команда Remove-item также принимает подстановочные знаки, с помощью которых мы можем удалять файлы сразу.
Remove-Item * .csv
Приведенная выше команда удаляет все файлы с расширением csv.
Если файл не существует, команда выдает ошибку, как показано ниже.
PS C : > Remove-Item C: dir1 FileThatDoesNotExist.txtRemove-Item: не удается найти путь 'C: dir1 FileThatDoesNotExist.txt', потому что он не существует. В строке: 1 символ: 1+ Remove-Item C: dir1 FileThatDoesNotExist.txt + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (C: dir1 FileThatDoesNotExist.txt: String) [Remove-Item ], ItemNotFoundException + FullyQualifiedErrorId: PathNotFound, Microsoft.PowerShell.Commands.RemoveItemCommand
Удалить каталог
Команда Remove-Item также работает для удаления каталогов. Ниже приведен пример команды для этого же.
Remove-Item C: FolderToDelete
Если в каталоге есть файлы, основная команда запрашивает подтверждение, вам может потребоваться нажмите «Y», чтобы продолжить удаление, «N», чтобы отменить его.
Чтобы избежать подтверждения, вы можете использовать аргумент «-recurse» вместе с командлетом «Remove-Item». Пример ниже.
Remove-Item -recurse C: FolderToDelete
Удалить все файлы из папки и ее подпапок
Я хочу удалить все файлы из структуры папок, поэтому у меня осталась пустая структура папок.
Можно это может быть достигнуто либо в пакетном режиме, либо в сценарии VBScript?
Я пробовал очень простую пакетную команду, но для этого требовалось, чтобы пользователь разрешил удаление каждого файла. Это не подходящее решение, так как файлов много сотен, и со временем их количество будет значительно увеличиваться.
Что вы можете предложить?
Это можно сделать с помощью PowerShell:
Get-ChildItem -Path C: Temp -Include *. * -File -Recurse | foreach {$ _. Delete ()}
Эта команда получает каждый дочерний элемент в $ path
, выполняет метод удаления для каждого из них и довольно быстро. Структура папок остается неизменной.
Если у вас могут быть файлы без расширения, используйте
Get-ChildItem -Path C: Temp - Включить * -File -Recurse | foreach {$ _. Delete ()}
вместо этого.
Похоже, что параметр -File
мог быть добавлен после PowerShell v2. Если это так, то
Get-ChildItem -Path C: Temp -Include *. * -Recurse | foreach {$ _. Delete ()}
Он должен помочь с файлами, имеющими расширение.
Если не работает, отметьте если у вас установлена последняя версия Powershell
Краткий и простой PowerShell. Не уверен, с какой самой младшей версией PS он будет работать.
Remove-Item c: Tmp * -Recurse -Force
-
3Красиво и просто. Это помогло, а принятый ответ – нет! – demonicdaron 28 нояб., В 13:58
-
1Это должен быть принятый ответ, вы даже можете просто ввести
rm *
, поскольку на самом деле не рекомендуется форсировать (в диалоговом окне подтверждения есть вариант «Да для всех») . – Дж. Гарсия, 30 окт., В 16:49 -
@JGarcia ОП сказал, что им вообще не нужен ввод пользователя, поэтому в этом случае требуется -Force. – Ник Коад 01 янв., 22:28
-
Это красиво и просто, но это не совсем то, о чем просил OP. Он хотел оставить структуру папок на месте (но просто удалить файлы). Это удалит файлы и папки, так что вы останетесь ни с чем. – cbailiss 27 сен. ’20 в 7:59
Краткий и пакетный PowerShell. Не уверен, с какой самой младшей версией PS он будет работать.
Remove-Item c: Tmp * -Recurse -Force
Вы можете сделать это с помощью del
команда:
dir C: folderdel/S *
Код /S > переключатель предназначен для рекурсивного удаления только файлов.
-
2Будет это только удалить файлы, но оставить папки? – BobJim 15 апр. ’14 в 12:56
-
5Да. Вы можете добавить параметр
/P
, чтобы он предлагал вам подтверждать каждое удаление, просто чтобы проверить это. – phoops 15 апр. ’14 в 12:59 -
спасибо, давай попробуем! надеюсь сэкономит много времени! – BobJim 15 апр. ’14 в 13:11
-
3Да. А для удаления скрытых и системных файлов выполните
attrib -s -r -h Folder *. */S/d
перед удалением. А для получения разрешений используйте командуtakeown
. – Jet 25 апр. ’14 в 13:49 -
3И вы можете использовать/Q, чтобы НЕ запрашивать подтверждение при использовании подстановочных знаков. – Айлатан, 25 сен. ’15 в 0:41
Вы можете сделать это с помощью del
команда:
dir C: folderdel/S *
переключатель /S
заключается в рекурсивном удалении только файлов.
Использование PowerShell:
Get-ChildItem -Path c: temp -Include * | remove-Item -recurse

Использование PowerShell:
Get-ChildItem -Path c: temp -Include * | remove-Item -recurse
Читая между строк в исходном вопросе, я могу предложить альтернативную строку кода BATCH, которую вы можете использовать. Что это будет делать при запуске, так это удалять только файлы, возраст которых превышает 60 дней.. Таким образом, вы можете поместить это в запланированную задачу, и когда она запустится, она удалит лишние файлы, которые вам не нужны, вместо того, чтобы сдуть весь каталог. Вы можете изменить 60 дней на 5 или даже на 1 день, если хотите. Это не удаляет папки.
forfiles -p "c: path to files" -d -60 -c "cmd/c del/f/q @path "

-
Спасибо за идею, но в настоящее время я думаю, что процесс “опорожнения” будут завершены в очень незапланированные временные рамки. Я сохраню этот код на будущее! Ура, БобДжим, 15 апр. ’14 в 13:42
-
Заголовок гласит: «Удалить все файлы из папки и ее подпапок», так что это не решение. – Андерс Линден 22 авг., 2017 в 06:26
Читая между строк в исходном вопросе, я могу предложить альтернативную строку кода BATCH, которую вы можете использовать. Что это будет делать при запуске, так это удалять только файлы, возраст которых превышает 60 дней. Таким образом, вы можете поместить это в запланированную задачу, и когда она запустится, она удалит лишние файлы, которые вам не нужны, вместо того, чтобы сдуть весь каталог. Вы можете изменить 60 дней на 5 или даже на 1 день, если хотите. Это не удаляет папки.
forfiles -p "c: path to files" -d -60 -c "cmd/c del/f/q @path "
Используйте PowerShell для удаления отдельного файла или папки. Перед выполнением команды Delete в PowerShell нам необходимо убедиться, что вы вошли на сервер или ПК с учетной записью, которая имеет полный доступ к объектам, которые вы хотите удалить.
Пример: http: //dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/
Remove-Item -Path ” C: dotnet-helpers DummyfiletoDelete.txt “
Вышеупомянутая команда выполнит и удалит файл« DummyfiletoDelete.txt », находящийся внутри« C: dotnet-helpers » расположение.
Remove-Item -Path “C: dotnet-helpers *. *”
Remove-Item -Path “C: dotnet-helpers *. *” -Recurse
-recurse
выполняет детализацию и находит намного больше файлов. Параметр –recurse
позволяет PowerShell удалять любые дочерние элементы без запроса разрешения. Кроме того, параметр –force может быть добавлен для удаления скрытых файлов или файлов только для чтения.
Использование команды -Force для принудительного удаления файлов
Удалить -Item -Path “C: dotnet-helpers *. *” -Force

Используйте PowerShell для удаления одного файла или папки. Перед выполнением команды Удалить в PowerShell необходимо убедиться, что вы вошли на сервер или ПК с учетной записью, которая имеет полный доступ к объектам, которые вы хотите удалить.
Пример: http: //dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/
Remove-Item -Path ” C: dotnet-helpers DummyfiletoDelete.txt “
Приведенная выше команда выполнит и удалит файл« DummyfiletoDelete.txt », который находится внутри« C: dotnet-helpers » расположение.
Remove-Item -Path “C: dotnet-helpers *. *”
Remove-Item -Path “C: dotnet-helpers *. *” -Recurse
-recurse
выполняет детализацию и находит намного больше файлов. Параметр –recurse
позволяет PowerShell удалять любые дочерние элементы без запроса разрешения. Кроме того, параметр –force может быть добавлен для удаления скрытых файлов или файлов только для чтения.
Использование команды -Force для принудительного удаления файлов
Удалить -Item -Path “C: dotnet-helpers *. *” -Force
Попробуйте это с помощью PowerShell. В этом примере я хочу удалить все файлы .class:
Get-ChildItem '. FOLDERNAME' -include * .class -recurse | foreach ($ _) {remove-item $ _. FullName}
Попробуйте это с помощью PowerShell. В этом примере я хочу удалить все файлы .class:
Get-ChildItem '. FOLDERNAME' -include * .class -recurse | foreach ($ _) {remove-item $ _. FullName}
-
В проводнике Windows выберите корневой каталог, содержащий все файлы и папки.
-
Найдите *
-
Сортировать по типу (все папки будут вверху, а все файлы – внизу)
-
Выберите все файлы и нажмите Delete.
Это удалит все файлы и сохранит структуру каталогов.
-
В проводнике Windows выберите корневой каталог, содержащий все файлы и папки.
-
Искать *
-
Сортировать по типу (все папки будут вверху, а все файлы, перечисленные ниже)
-
Выберите все файлы и нажмите Удалить.
Это удалит все файлы и сохранить структуру каталогов.
Удалить все файлы из текущего каталога и подкаталоги, но оставив структуру папок.
(/Q
) переключатель предназначен для запроса пользователя, может ли он удалить
Внимание : попробуйте без /Q
, чтобы убедиться, что вы не удаляете ничего ценного.
del/S */Q
Удалить все файлы из текущего каталога и подкаталогов, но оставить структуру папок.
(/Q
) переключатель предназначен для запроса пользователя, может ли он удалить
Внимание : попробуйте без /Q
, чтобы убедиться, что вы не удаляете ничего ценного.
del/S */Q
Это самый простой способ IMO
Откройте PowerShell, перейдите в каталог ( cd
),
ls -Recurse * | rm
(Пуф) все пропало …
Если вы хотите удалить на основе определенного расширения
ls -Recurse * .docx | rm
ls
выводит список каталога
-Recurse
– это флаг, указывающий PowerShell, что нужно переходить в любые подкаталоги
*
говорит все
* .doc
все с расширением .doc
|
подавать вывод слева направо
rm
delete
Все остальные ответы, похоже, делают это более запутанным, чем необходимо.

Это самый простой способ ИМО
Откройте PowerShell, перейдите в каталог ( cd
),
ls -Recurse * | rm
(Пуф) все пропало …
Если вы хотите удалить на основе определенного расширения
ls -Recurse * .docx | rm
ls
выводит список каталога
-Recurse
– это флаг, указывающий PowerShell, что нужно переходить в любые подкаталоги
*
говорит все
* .doc
все с расширением .doc
|
подавать вывод слева направо
rm
delete
Все остальные ответы, похоже, делают это более запутанным, чем необходимо.
Мы можем удалить все файлы в папке и ее подпапках с помощью следующей команды.
Get-ChildItem -Recurse -Path 'D: Powershell Practice' | Where-Object {$ _. GetType () -eq [System.IO. FileInfo]} | Remove-Item
Или
Get-ChildItem -Recurse -Path 'D: Powershell Practice' - Файл | Remove-Item
-
1
$ Path = 'c: Folder'; Get-ChildItem $ Path -File -Recurse | Remove-Item
– Кит Миллер 01 марта 2020 г., 07:59 -
Спасибо @KeithMiller – Dishant Batra 01 мар. ’20 в 8:32
Мы можем удалить все файлы в папке и ее подпапках с помощью следующей команды.
Get-ChildItem -Recurse -Path 'D: Powershell Practice' | Where-Object {$ _. GetType () -eq [System.IO.FileInfo]} | Remove-Item
Или
Get-ChildItem -Recurse -Path 'D: Powershell Practice' -File | Remove-Item
каталог C: testx -Recurse -File | rd -WhatIfWhat if: Выполняется операция «Удалить файл» на целевом «C: testx x.txt». Что если: Выполняется операция «Удалить файл» на целевом «C: testx bla x.txt».

dir C: testx -Recurse -File | rd -WhatIfWhat if: Выполняется операция «Удалить файл» на целевом «C: testx x.txt». Что если: Выполняется операция «Удалить файл» на целевом «C: testx bla x.txt».
С Powershell 5.1 :
$ extensions_list = Get-ChildItem -Path 'C: folder_path ' -Recurseforeach ($ extension в $ extension_list) {if ($ extension. Атрибуты - не как "Каталог") {Remove-Item $ extension. FullName}}
Удаляет все элементы, не относящиеся к каталогу.
$ extension.FullName = Item Path
$ extension.Attributes = Тип элемента (каталог или архив)
В Powershell 5.1:
$ extensions_list = Get- ChildItem -Path 'C: folder_path ' -Recurseforeach ($ extension в $ extension_list) {if ($ extension.Attributes -notlike "Directory") {Remove-Item $ extension.FullName}}
Удаляются все элементы, не относящиеся к каталогу.
$ extension.FullName = Item Path
$ extension.Attributes = Item Тип (Каталог или Архив)
В дополнение к приведенным выше ответам на самом деле нет необходимости использовать Get-Childitem и передавать результат конвейеру в приведенных выше ответах, потому что ключевое слово -Include включено в команду Remove-Item
Можно просто:
Remove-Item -Include “. ” “C: Temp” -Recurse
В дополнение к приведенным выше ответам на самом деле нет необходимости использовать Get-Childitem и передавать результат конвейеру в приведенном выше отвечает, потому что ключевое слово -Include включено в команду Remove-Item
Можно просто:
Remove-Item -Include “. “” C: Temp “-Recurse