Powershell: как удалить файлы

В этом сообщении объясняется, как удалить файлы с помощью команды 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


59

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

  Remove-Item c:  Tmp  * -Recurse -Force  

Улучшите этот ответ
ответ дан 2 нояб. : 21
  • 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  

22

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

  dir C:  folderdel/S *  

Код /S > переключатель предназначен для рекурсивного удаления только файлов.

Улучшите этот ответ
ответил 15 апр. ’14 в 12:44
  • 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
| показать 3 дополнительных комментария

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

  dir C:  folderdel/S *  

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


5

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

  Get-ChildItem -Path c:  temp -Include * |  remove-Item -recurse  

Улучшите этот ответ
отредактировано 28 октября 2014 г. в 18:10
bwDraco
4k3939 золотых знаков154154 серебряных знака192192 бронзовых знака
ответил 28 окт. div>
добавить комментарий |

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

  Get-ChildItem -Path c:  temp -Include  * |  remove-Item -recurse  

4

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

  forfiles -p "c:  path  to  files" -d -60 -c "cmd/c del/f/q @path  " 

Улучшите этот ответ
отредактировано 15 апр. ’14 в 17:21
ответил 15 апр. ’14 в 13:18
  • Спасибо за идею, но в настоящее время я думаю, что процесс “опорожнения” будут завершены в очень незапланированные временные рамки. Я сохраню этот код на будущее! Ура, БобДжим, 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  " 

4

Используйте 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

Улучшите этот ответ
отредактировано 9 апреля ’19 в 11:26
Адиль Х. Раза
10344 бронзовых знака
ответил 10 мая ’18 в 7:13
добавить комментарий |

Используйте 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


1

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

  Get-ChildItem '.  FOLDERNAME' -include * .class -recurse |  foreach ($ _) {remove-item $ _. FullName}  

Улучшите этот ответ
отредактировано 7 декабря ’14 в 12:29
Питер Мортенсен
11. 2k2222 золотых знака6464 серебряных знака8686 бронзовых знаков
ответ дан 20 ноя ’14 в 21:28
добавить комментарий |

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

  Get-ChildItem '.  FOLDERNAME' -include * .class -recurse |  foreach ($ _) {remove-item $ _. FullName}  

1

  1. В проводнике Windows выберите корневой каталог, содержащий все файлы и папки.

  2. Найдите *

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

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

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

Улучшите этот ответ
ответил 16 марта 2015, в 9:12
добавить комментарий |

  1. В проводнике Windows выберите корневой каталог, содержащий все файлы и папки.

  2. Искать *

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

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

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


1

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

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

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

  del/S */Q  

Улучшите этот ответ
ответил 18 мая ’15 в 11:30
добавить комментарий |

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

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

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

  del/S */Q  

1

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

Откройте PowerShell, перейдите в каталог ( cd ),

  ls -Recurse * |  rm  

(Пуф) все пропало …

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

  ls -Recurse * .docx |  rm  

ls выводит список каталога

-Recurse – это флаг, указывающий PowerShell, что нужно переходить в любые подкаталоги

* говорит все

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

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

rm delete

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

Улучшить этот ответ
отредактировано 12 октября 2016 года в 20:56
ответил 12 октября ’16, 20:45
добавить комментарий |

Это самый простой способ ИМО

Откройте PowerShell, перейдите в каталог ( cd ),

  ls -Recurse * |  rm  

(Пуф) все пропало …

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

  ls -Recurse * .docx |  rm  

ls выводит список каталога

-Recurse – это флаг, указывающий PowerShell, что нужно переходить в любые подкаталоги

* говорит все

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

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

rm delete

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


1

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

  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  

Улучшите этот ответ
отредактировал 01 марта ’20 в 8:34
ответил 01 марта ’20 в 06:34
  • 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  

0

   каталог C:  testx  -Recurse -File |  rd -WhatIfWhat if: Выполняется операция «Удалить файл» на целевом «C:  testx  x.txt». Что если: Выполняется операция «Удалить файл» на целевом «C:  testx  bla  x.txt».   

Улучшите этот ответ
отредактировано 10 апреля 2017 в 10:59
bertieb
6,6421111 золотых знаков3333 серебряных знака4848 бронзовых знаков
ответил 10 апр. ’17 в 10:36
добавить комментарий |

  dir C:  testx  -Recurse -File |  rd -WhatIfWhat if: Выполняется операция «Удалить файл» на целевом «C:  testx  x.txt». Что если: Выполняется операция «Удалить файл» на целевом «C:  testx  bla  x.txt».   

0

С 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 = Тип элемента (каталог или архив)

Улучшите этот ответ
ответил 4 февраля ’20 в 17:43
добавить комментарий |

В 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 Тип (Каталог или Архив)


-1

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

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

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

Улучшить этот ответ
ответил 14 окт. 59
добавить комментарий |

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

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

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

Оцените статью
futurei.ru
Добавить комментарий