2014-04-15 12:40:31 +0000 2014-04-15 12:40:31 +0000
57
57

Удалить все файлы из папки и ее вложенных папок

Я хочу удалить все файлы из структуры папок, поэтому у меня осталась пустая структура папок

Можно ли этого добиться с помощью пакетного или VBScript скриптинга?

Я попробовал очень базовую пакетную команду, но для этого потребовалось, чтобы пользователь разрешил удалить каждый файл. Это не было подходящим решением, т.к. существует много сотен файлов, и со временем их количество значительно возрастет.

Что вы можете предложить?

Ответы (13)

81
81
81
2014-04-15 13:18:38 +0000

Это можно сделать с помощью PowerShell :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

Эта команда получает каждый дочерний элемент в $path, выполняет метод удаления на каждом из них, и довольно быстро. Структура папок остается нетронутой.

Если у вас могут быть файлы без расширения, используйте

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

.

Похоже, что параметр -File мог быть добавлен после PowerShell v2. Если это так, то

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

.

Если это не работает, проверьте, есть ли у вас последняя версия Powershell .

29
29
29
2017-11-02 17:21:27 +0000

Короткий и люксовый PowerShell. Не знаю, с какой самой низкой версией PS он будет работать.

Remove-Item c:\Tmp\* -Recurse -Force
```.
22
22
22
2014-04-15 12:44:30 +0000

Вы можете сделать это с помощью команды del:

dir C:\folder
del /S *

Переключатель /S заключается в рекурсивном удалении только файлов.

4
4
4
2014-04-15 13:18:19 +0000

Читая между строк по вашему оригинальному вопросу, я могу предложить вам альтернативную BATCH-кодовую строку, которую вы можете использовать. Что это будет делать при запуске, так это удалять только файлы, которым больше 60 дней. Таким образом, вы можете поместить это в задание по расписанию, и когда оно выполняется, оно удалит лишние файлы, которые вам не нужны, вместо того, чтобы удалить всю директорию. При желании вы можете изменить 60-5 дней или даже 1 день. Это не удаляет папки.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
4
4
2014-10-28 15:39:38 +0000

Использование PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
3
3
3
2018-05-10 07:13:40 +0000

Используйте PowerShell для удаления одного файла или папки. Перед выполнением команды Delete в PowerShell нам нужно убедиться, что вы вошли на сервер или ПК с учетной записью, имеющей полный доступ к объектам, которые вы хотите удалить. С примером: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Использование команд PowerShell для удаления файла

Удалить-Итем - Путь “C:\dotnet-helpers\DummyfiletoDelete. txt”

Команда, приведенная выше, выполнит и удалит файл “DummyfiletoDelete.txt”, который находится в папке “C:\dotnet-helpers”.

Используя запятые PowerShell, удалите все файлы

Remove-Item -Path “C:\dotnet-helpers*. *”

Использование команд PowerShell для удаления всех файлов и папок

Remove-Item - Путь “C:\dotnet-helpers*.*” - recurse

-recurse высверливает и находит намного больше файлов. Параметр –recurse позволит PowerShell удалять любые дочерние элементы без запроса разрешения. Кроме того, можно добавить параметр -force для удаления скрытых или доступных только для чтения файлов.

Использование команды -Force для принудительного удаления файлов

Использование команды PowerShell для принудительного удаления всех файлов

Удалить-Итем -Путь “C:\dotnet-helpers*.*” -Force

1
1
1
2014-11-20 21:28:24 +0000

Попробуй это с помощью PowerShell. В этом примере я хочу удалить все файлы .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
1
1
2015-05-18 11:30:46 +0000

Удалить все файлы из текущего каталога и подкаталогов, но оставляя структуру папок.

(/Q) переключатель для того, чтобы спросить пользователя, если он может удалить

Внимание: попробуйте его без /Q, чтобы убедиться, что вы не удаляете ничего ценного.

del /S * /Q
1
1
1
2016-10-12 20:45:27 +0000

Это самый простой способ IMO

Open PowerShell, перейти к каталогу (cd), THEN

ls -Recurse * | rm

(Poof) все пропало….

Если вы хотите удалить на основе конкретного расширения

ls -Recurse *.docx | rm

ls листинг каталога

-Recurse флаг, говорящий powershell, чтобы войти в любой подкаталог

* говорит все

*.doc все с . doc расширение

| подает вывод слева направо

rm удаляет

Все остальные ответы кажутся более запутанными, чем необходимо.

1
1
1
2015-03-16 09:12:32 +0000
  1. В Проводнике Windows выберите корневой каталог, содержащий все файлы и папки.

  2. Поиск по адресу *

  3. Сортируйте по типу (все папки будут сверху и все файлы, перечисленные снизу)

  4. Выберите все файлы и нажмите Удалить.

Это удалит все файлы и сохранит структуру каталога.

0
0
0
2020-03-01 06:34:32 +0000

Мы можем удалить все файлы в папках и их подкаталогах с помощью нижеприведенной команды

Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
```.
0
0
0
2020-02-04 17:43:55 +0000

С помощью Powershell 5.1:

  • *
$extensions_list = Get-ChildItem -Path 'C:\folder_path 

* * 

Удаляет все итенсы, которые не являются каталогами. 

$extension.FullName = Путь к объекту 

$extension.Attributes = Тип объекта (каталог или архив). -Recurse

foreach ( $extension in $extensions_list) {

    if ($extension.Attributes -notlike "Directory") {

        Remove-Item $extension.FullName  
    }
}
  • *

Удаляет все итенсы, которые не являются каталогами.

$extension.FullName = Путь к объекту

$extension.Attributes = Тип объекта (каталог или архив).

-1
-1
-1
2018-10-14 14:59:48 +0000

В качестве дополнения к вышеуказанным ответам, на самом деле нет необходимости использовать Get-Childitem и передавать результат в конвейере в вышеуказанных ответах, потому что ключевое слово -Include включено в команду Remove-Item

Можно просто:

Remove-Item -Include “.” “C:\Temp” -Recurse

Похожие вопросы

3
19
10
28
10